Как я могу добавить подключаемый модуль в реестр при использовании Zend_Form?

У меня есть форма Zend, которую я инициализирую следующим образом:

$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 по умолчанию.


person Mallika Iyer    schedule 27.04.2010    source источник


Ответы (2)


В файле Zend/Form/DisplayGroup.php FieldSet был «Fieldset» (строчная буква «S»). Я изменил его на Fieldset, и он отлично работает.

person Mallika Iyer    schedule 27.04.2010
comment
В документации четко указано ZendForm — это Fieldset со строчной буквой «S». Я столкнулся с той же ошибкой на своем рабочем сайте на сервере Debian. В моих средах разработки (Win, OSX) не было никаких проблем, поскольку эта ОС нечувствительна к регистру. Спасибо, это было действительно полезно. - person mbenegas; 09.03.2012

Тем не менее, есть кое-что странное: при включении нескольких подчиненных форм и настройке декораторов для содержания Fieldset, если вы ошибочно примете FieldSet (с большой буквы S) на некоторых из них, проблем не будет.

Кажется, что одна строчная буква решает проблему для всех остальных.

Кроме того, вы можете загрузить класс FieldSet из Zend (Zend_Form_Decorator_Fieldset), и все будет работать с заглавной S.

(проверено с Zend 1.11)

person Xia    schedule 06.12.2012