Возникли трудности с расширением Zend_Form - PullRequest
0 голосов
/ 03 апреля 2012

В настоящее время у меня большие трудности с расширением Zend_Form.

У меня есть базовый класс с именем Forms_LpaManageEmailForm . Используется отдельно и отлично работает. Затем я создал новую форму класса вызываемый Default_Form_CartReport с расширением Forms_LpaManageEmailForm . Поэтому задача состоит в том, чтобы отрендерить Default_Form_CartReport и слегка его модифицировать. Другими словами, мне нужна вся функциональность Forms_LpaManageEmailForm класс, но с переопределенной функцией _addMultiOptionsForMultiSelect() (что сделано) и измененная метка кнопки (не решена).

В базовом классе у меня есть скрытый элемент с именем id , значение которого заполнено $this->_entry_id['entry_id']. Когда я использую базовую форму отдельно - она ​​прекрасно работает. Но когда я запускаю расширенную форму (Forms_LpaManageEmailForm), я вижу, что значение скрытого элемента id пусто. В базовом классе в секции конструкции я бегу Zend отладчик (с этой строкой Zend_Debug::dump($this->_entry_id['entry_id'])), чтобы увидеть, если значение передается. И это прошло :) Когда я повторяю это в разделе init (), он показывает NULL ...

Как я почти не понимаю - проблема заключается в функциях init (), в том виде, как она вызывается. Я думаю, что-то не так с скелетом класса Default_Form_CartReport.

Я загрузил код для: PASTEBIN Очень нужна помощь в этом вопросе.

Спасибо!

1 Ответ

1 голос
/ 03 апреля 2012

Я полагаю, что ваши проблемы вызывают тот факт, что Forms_LpaManageEmailForm:: __construct звонит $this->init() напрямую.если вы откроете Zend_Form, вы заметите, что __construct также вызывает функцию $this->init().Это приводит к тому, что ваша функция init() выполняется дважды.

Попробуйте загрузить все свои логические элементы и элементы исключительно в функцию __construct и не используйте функцию init().кроме того, функция __construct в каждом классе формы всегда должна вызывать parent::__construct перед любой дополнительной логикой.

...