Zend_Form tiene una funcional riqueza, muchas de ellas dirigidas
a expertos desarroladores. Este capítulo esta dirigido a documentar algunas de las
funcionalidades con ejemplos y casos de uso.
Zend_Form intenta automatizar este proceso con los
sub formularios. Por
defecto, los sub formularios son generados usando la notación de array como se muestra
en el anterior formulario HTML listado completo con identificadores. El nombre del array
esta basado en el nombre del sub formulario, con las llaves basados en los elementos
contenidos en el sub formulario. Los sub formularios pueder ser anidados arbitrariamente,
y esto puede crear arrays anidados que reflejan la estructura.
Adicionalmente, las validaciones rutinarias en
Zend_Form respetan la estructura del array, asegurando que sus
formularios sean validados correctamente, no importa cuan arbitrariamente anidados esten los
sub formularios. No se necesita hacer nada para beneficiarse; éste
comportamiento esta activo por defecto.
Zend_Form::setIsArray($flag): Definiendo la
bandera a verdadero, se puede indicar que un entero formulario deberia ser
tratado como un array. Por defecto, el nombre del formulario será
usado como el nombre del array, a no ser que
setElementsBelongTo() haya sido llamado. si el
formulario no tiene un específico nombre, o si
setElementsBelongTo() no ha sido definido, esta bandera
será ignorada (como no hay nombre del array al cual
los elementos puedan pertenecer).
isArray().
Zend_Form::setElementsBelongTo($array):
Usando este método, se puede especificar el nombre de un array al
cual todos los elementos del formulario pertenecen. Se puede determinar el
nombre usando el accesor getElementsBelongTo().
Zend_Form_Element::setBelongsTo().
Para descubrir el valor que tiene -- sea o no sea definido explicitamente o
implicitamente a través del formulario -- se puede usar el
acceso getBelongsTo().
Zend_Form; sin embargo, mas soporte para implementarlos
esta disponible y puede ser utilizado con una pequeña ayuda.
Zend_Session_Namespace para persistir la información, el cual
nos ayudará a responder la pregunta de cual formulario someter.
$subForm =
$this->getCurrentSubForm();" recuperar el actual
sub formulario para la validación, o "$next =
$this->getNextSubForm();" obtener el siguiente para
desplegar.
getCurrentSubForm() para determianr
si algún sub formulario ha sido sometido (falso retorna ningún valor
ha sido desplegado o sometido), y
getNextSubForm() recupera el formulario a desplegar. Podemos
entonces usar el método del formulario prepareSubForm() para asegurar
que el formulario esta listo para desplegar.
Aquí está la información que nos ha proporcionado:
// Tienen que construir esto con los items que estan almacenados en los namespaces // de la sesión foreach ($this->info as $info): foreach ($info as $form => $data): ?>