2012-04-03 1 views
0

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

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

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

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

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

Спасибо!

ответ

1

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

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

+0

** aporat **, большое спасибо за ваш ответ! Я обновил свой код, теперь его здесь: [LINK] (http://pastebin.com/DPJxv7U5). Теперь, когда я запускаю 'Zend_Debug :: dump ($ this-> getElements()), он пишет, что элемент id имеет значение' ["_value": protected] => int (51) '. Но все же он не выводится в HTML ... Теперь я могу изменить метки :) Я думаю, что мы на правильном пути для окончательного решения – Kuzma

+0

Кроме того, я добавил данные из 'Zend_Debug :: dump ($ this-> getElements()) ' – Kuzma

+0

Путем: если я удалю элемент id из родительского класса - дочерняя форма вообще не будет отображаться. Но я вижу форму дампа ... Очень странное поведение – Kuzma