Лучшее место для создания элементов формы - переопределить метод init()
, например
class App_forms_ItemEditor extends Zend_Form
{
public function init()
{
$email = $this->createElement('text', 'email');
$email->setLabel('Your email address:');
$email->setRequired(TRUE);
$email->addValidator(new Zend_Validate_EmailAddress());
$email->addFilters(array(
new Zend_Filter_StringTrim(),
new Zend_Filter_StringToLower()
));
$email->setAttrib('size', 40);
$this->addElement($email);
}
}
Если вы взломали Zend_Form::__construct()
, вы должны по крайней мере принять те же аргументы и передать их, используя parent::__construct()
Кроме того, я немного не уверен насчет строчной буквы "f" в части "form" имени вашего класса. Из памяти автозагрузчик модуля переводит часть имени «Форма» в каталог «формы» в вашем модуле.
Однако я отмечаю, что вы не используете автозагрузчик модуля (или, по крайней мере, вы не показали, что вы используете)
Относительно автозагрузчиков модулей ...
Процесс начальной загрузки регистрирует автозагрузчик модуля, используя настроенное значение appnamespace
(обычно «Приложение») с базовым путем «приложение».
Автозагрузчик модуля автоматически регистрирует некоторые сопоставления имен / путей классов для классов, начиная с настроенного пространства имен (например, «Application_»). Это включает в себя формы.
По сути, это означает, что вы можете создавать формы в application/forms/MyForm.php
с именем класса Application_Form_MyForm
, и автозагрузчик найдет его.
Откройте `Zend_Application_Module_Autoloader", чтобы увидеть полный список.