5

¿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?

+0

Puede rellenar zend_forms con datos utilizando $ form-> poblar ($ datos) ; – Marcin

+0

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

+0

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;) –

Respuesta

2

Mucho depende del diseño y el diseño final.

¿Dónde desea que se muestren los errores de validación? ¿Cómo? ¿Decorador de error de Via?
¿Desea también utilizar las descripciones?
¿Necesita usar otros decoradores?

La mejor manera parece ser crear su propio elemento Zend_Form_Element_ThreadIcons. Esto es tan fácil como crear una subclase de uno de los elementos Zend_Form e implementar el método _render() personalizado que devuelve el código HTML que necesita. Incluso puede usar su propia instancia View allí.

Luego puede pasar un conjunto de iconos como una opción de elemento y manejarlo de la manera que necesita.

Si decide utilizar decoradores, que mi encontrar esta presentación muy útil para dominar la técnica:

+0

Me gusta esta solución. Regresaré al trabajo el lunes, así que lo veré luego :). – mingos

Cuestiones relacionadas