我成功添加了一个具有以下配置的自定义视图助手:
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 中读到了共享服务 - 是这样的吗?我该如何防止这种行为?
答案 0 :(得分: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中存在错误,目前不适用于视图助手。