¿Existe alguna manera confiable de crear una vista personalizada para un Zend_Form
? Los decoradores son bastante crípticos y usarlos de formas sofisticadas a veces es tan complicado que prefiero simplemente escribir el HTML a mano. ¿Hay alguna manera de hacerlo y aún así hacer que la forma coopere completamente con el controlador (por ejemplo, llame al $form->isValid()
y espere que todo valide correctamente)? Si es así, ¿hay alguna advertencia que tener en cuenta (como tener cuidado con la visualización de errores de validación)?Crear una vista de formulario en Zend
La solución ideal sería crear un formulario y pasar el conjunto de elementos (que contiene los datos necesarios como nombres, ID, tipos de entrada y todo lo necesario para representar el HTML). ¿Lo permite Zend Framework?
[EDIT]
En lugar de simplemente echo
ing el objeto de formulario, he intentado añadir este código en la vista (un simple formulario de login):
<?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>
La forma parece funcionar bien y validar (aunque no me redirigen a la página de donde vengo, pero ese es un problema diferente, creo, cuando lo paso por GET
, no en el formulario). ¿Es eso aceptable, o estoy haciendo algo horriblemente mal sin saberlo?
Puede rellenar zend_forms con datos utilizando $ form-> poblar ($ datos) ; – Marcin
No me refiero a poblarlos con datos, me refiero a escribir mi propio HTML, sin recurrir al uso de esos terribles y terribles decoradores. – mingos
Es un método complicado, y es por eso que no lo publicaré como respuesta, pero como sugirió Marcin, aún puede escribir su propio formulario en una vista, con exactamente los mismos ID, y escribir su formulario con Zend_Form, y luego rellene para usar filtros, validadores, etc. ... También puede usar filtros y validadores independientes sin usar Zend_Form, básicamente es lo mismo que usar Zend_Form sin el formulario generado. Pero el mejor consejo es todavía: sumergirse en decoradores;) –