Есть ли надежный способ создания пользовательского представления для Zend_Form
? Декораторы довольно загадочны, и использование их причудливыми способами иногда настолько сложно, что я предпочел бы просто написать HTML вручную. Есть ли способ сделать это и при этом заставить форму полностью взаимодействовать с контроллером (например, позвонить $form->isValid()
и ожидать, что все будет проверено правильно)? Если да, есть ли какие-то предостережения, на которые стоит обратить внимание (например, заботиться об отображении ошибок валидации)?
Идеальным решением было бы создать форму и передать массив элементов (содержащий необходимые данные, такие как имена, идентификаторы, типы ввода и все необходимое для визуализации HTML) - разрешает ли это Zend Framework?
[EDIT]
Вместо того, чтобы просто echo
использовать объект формы, я попытался добавить этот код в представление (простая форма входа):
<?php
$userid = $this->form->getElement('userid');
$pass = $this->form->getElement('password');
$remember = $this->form->getElement('remember');
$submit = $this->form->getElement('submit');
?>
<form enctype="<?php echo $this->form->getEnctype(); ?>" method="<?php echo $this->form->getMethod(); ?>" action="<?php echo $this->form->getAction(); ?>" id="<?php echo $this->form->getId(); ?>">
name: <input type="text" id="<?php echo $userid->getId(); ?>" name="<?php echo $userid->getName(); ?>" /><br />
pass: <input type="password" id="<?php echo $pass->getId(); ?>" name="<?php echo $pass->getName(); ?>" /><br />
remember: <input type="checkbox" id="<?php echo $remember->getId(); ?>" name="<?php echo $remember->getName(); ?>" /><br />
submit: <input type="submit" id="<?php echo $submit->getId(); ?>" name="<?php echo $submit->getName(); ?>" value="<?php echo $submit->getValue(); ?>" />
</form>
Форма, кажется, работает нормально и проверяется (хотя я не перенаправлен на страницу, с которой я пришел - но я считаю, что это другая проблема, когда я передаю ее через GET
, а не в форме). Это приемлемо, или я делаю что-то ужасно неправильно, не зная об этом?