Tengo algunos problemas para aprender a usar formularios personalizados en Zend Framework.Zend Framework Formularios personalizados con viewScript
He seguido varias guías pero ninguna parece funcionar. Nada en absoluto se rinde.
Aquí están los bits de código que estoy tratando de usar (Todos los códigos a continuación están en el módulo predeterminado). He simplificado el código a una sola entrada para la prueba.
aplicaciones/formas/una/Nametest.php
class Application_Form_One_Nametest extends Zend_Form {
public function init() {
$this->setMethod('post');
$name = new Zend_Form_Element_Text('name');
$name->setLabel('Box Name')
->setRequired(true)
->addFilter('StripTags')
->addFilter('StringTrim')
->addValidator('NotEmpty');
$submit = new Zend_Form_Element_Submit('submit');
$submit->setLabel('Submit Message');
$submit->setAttrib('id', 'submitbutton');
$submit->setAttrib('class', 'bluebutton');
$this->addElements(array($name, $submit));
}
}
de aplicación/views/scripts/uno/formlayout.phtml
<form action="<?= $this->escape($this->form->getAction()) ?>" method="<?= $this->escape($this->form->getMethod()) ?>">
<p>
Please provide us the following information so we can know more about
you.
</p>
<? echo $this->element->name ?>
<? echo $this->element->submit ?>
</form>
application/controllers/IndexController.php
public function formtestAction() {
$form = new Application_Form_One_Nametest();
$form->setDecorators(array(array('ViewScript', array('viewScript' => 'one/formlayout.phtml'))));
$this->view->form = $form;
}
application/views/scripts/index/formtest.phtml
<h1>Formtest</h1>
<?
echo $this->form;
?>
El código anterior no arroja ningún error ni representa ninguna parte de formlayout.phtml, incluidas las etiquetas de formulario o el texto entre las etiquetas p.
¿Alguien me puede decir lo que podría estar haciendo mal?
Un error común es tener un constructor en la clase de formulario que no llama al constructor padre. Esto da como resultado un resultado de formulario vacío, ya que es el constructor padre el que finalmente llama al método 'init()'. Solo pensando en voz alta ... –