Zend_form доступ родительский элемент формы - PullRequest
1 голос
/ 12 января 2010

Я не смог найти никаких ссылок на то, как использовать родительский элемент формы в подклассе. Может быть потому, что это очевидно для всех, кроме меня. Это поставило меня в тупик. Это то, что я пытался.

Сначала в конструкторе форм я позвонил

parent::__construct($options = null);

затем получил доступ к родительским элементам, как это

$type = parent::setName($this->type);

Проблема заключалась в том, что ВСЕ родительские элементы формы будут отображаться независимо от того, вызван ли он явно или нет. Кто-то сказал: «Не используйте __construct (), используйте вместо этого функцию init (). Поэтому я изменил конструктор на init (), закомментировал родительский конструктор, а затем запустил форму. Он взорвался, сказав, что не может передать пустое значение для setName (). Я закомментировал все вызовы seName () и форма запустилась, но отобразил только элементы, созданные в подклассной форме.

У меня такой вопрос: если я не использую родительский конструктор, как мне получить и использовать родительские элементы формы?

Решено: Поскольку конструктор был переключен на init, также необходимо было переключить вызов родителя. Легко для кого-то с фоном php. Не так много для того, кто этого не делает.

Используйте

parent::init();

Ответы [ 2 ]

1 голос
/ 05 марта 2010

Решено: Поскольку конструктор был переключен на init, также необходимо было переключить вызов родителя. Легко для кого-то с фоном php. Не так много для того, кто этого не делает.

Используйте

Родитель :: Init ();

0 голосов
/ 12 января 2010

Сначала вы должны изучить принципы ООП. Очевидно, вы не понимаете этого вообще. Вам нужно вызвать parent :: init () в вашем методе Form_Class :: init (), как вы написали, но почему? Потому что в противном случае родительский метод не вызывается и переопределяется методом From_Class.

Другое дело, что если у вас есть родительский класс «SuperForm» с вводом и отправкой, тогда вашему «SuperForm_Subclass» будут назначены те же элементы. Нет необходимости использовать «parent :: *» для доступа к элементу (единственное исключение будет, если вы используете статическую переменную SuperForm для их хранения - что не имеет смысла).

Вы можете легко использовать $ this-> inputElement и $ this-> submitElement внутри своего класса SuperForm_Subclass, как в классе SuperForm.

В вашем примере вы могли бы использовать __contruct () как хорошее, но с тем же условием вызова родительского конструктора. Вы также сможете получить доступ к сгенерированным там элементам ...

...