我有一个zend表单,我正在初始化如下:
$ form = new Form_XYZ();
我有一个这种形式的显示组,我这样称呼:
$form->addDisplayGroup($generalSettingsGroup,
'general',
array(
'legend' => 'General',
'disableDefaultDecorators' => true,
'decorators' => array(
'FormElements',
'FieldSet',
array('HtmlTag',
array('tag' => 'div', 'class' => 'general')
)
)
)
);
我收到此错误:
ArrayObject Object
(
[exception] => Zend_Loader_PluginLoader_Exception Object
(
[message:protected] => Plugin by name 'FieldSet' was not found in the registry; used paths:Zend_Form_Decorator_: Zend/Form/Decorator/
[string:private] =>
[code:protected] => 0
[file:protected] => /usr/share/pear/PEAR/Zend/Loader/PluginLoader.php
[line:protected] => 406
[trace:private] => Array
...................
如何将FieldSet插件添加到注册表中?我正在使用默认的Zend_Form Fieldset装饰器。
答案 0 :(得分:3)
在文件Zend / Form / DisplayGroup.php中,FieldSet为'Fieldset'(小写'S')。 我把它改成了Fieldset,它运行正常。
答案 1 :(得分:2)
然而,有一些奇怪的事情:当包含多个子表单并将Decorator设置为包含Fieldset时,如果你误认为其中一些是FieldSet(有大写S),那就没问题了。
似乎一个小写可以解决所有其他问题。
此外,您可以从Zend(Zend_Form_Decorator_Fieldset)加载FieldSet类,并使所有内容都适用于大写S.
(用Zend 1.11测试)