0

我成功添加了具有以下配置的自定义视图助手:

https://gist.github.com/webdevilopers/b22f7471fd2b8d60cdea#file-module-php

视图助手有一个名为的自定义变量foo

https://gist.github.com/webdevilopers/b22f7471fd2b8d60cdea#file-abstractformautocomplete-php

正如我所提到的,只要我只有一个使用视图助手的元素,这个设置就可以正常工作。

一旦我添加了多个表单元素,该setFoo方法只会被调用一次,并且foo变量在以下元素中保持设置。

https://gist.github.com/webdevilopers/b22f7471fd2b8d60cdea#file-autocompleteform-php

我阅读了ZF2 中共享服务- 是这样的情况吗?我怎样才能防止这种行为?

Zend Framework 2 ServiceManager 简介

默认情况下,ServiceManager 假定所有服务都是共享的,但您可以在此处指定布尔值 false 以指示应返回新实例。

4

1 回答 1

2

你基本上已经在这里回答了你自己的问题。服务是默认共享的,因此视图助手的初始实例将被重用于后续调用,除非您另外配置它​​。为此,请将shared参数添加到您的视图助手配置(未经测试):

public function getViewHelperConfig()
{
    return array(
        'invokables' => array(
            'formelement'                  => 'Application\Form\View\Helper\FormElement',
            'formautocompletehidden'       => 'Application\Form\View\Helper\FormAutocompleteHidden'
        ),
        'shared' => array(
            'formelement' => false,
            'formautocompletehidden' => false
        ),
    );
}

编辑:如评论中所述,由于 ZF2 中的错误,这目前不适用于视图助手。

于 2014-06-25T12:55:01.027 回答