2012-08-30 11 views
5

Zend Form 2 estructura todos los elementos en conjuntos de campos. (Zend \ Form \ Forma extiende Fieldset - Formulario :: añadir llamadas de padres :: add)Pasar por Elementos de formulario en el orden en que se agregaron

Si acabo de añadir elementos a la Forma I puede conseguir a través de ellos $form->getElements() si uso un conjunto de campos que puede obtener a través de ellos

foreach($form->getFieldsets() as $fieldset){ 
    $elements = $fieldset->getElements(); 
} 

Pero imagina un formulario donde agrego unos pocos campos ocultos, luego un fieldset y, finalmente, un botón de enviar.

¿Cómo puedo obtener los elementos/conjuntos de campo en el orden correcto?

Motivo detrás de esto, estoy trabajando en un asistente de visualización que me permite imprimir formularios mediante una simple llamada al asistente de visualización.

no quiero llamar a cada elemento de la forma a través de una llamada a formRow() (no conozco el concepto detrás de Form2 - separar la lógica de la presentación)

Cualquier ayuda es muy apreciada. TIA

Respuesta

9

puede hacer lo siguiente para obtener los elementos y conjuntos de campos en el orden en que se añadieron a la forma:

/* $form is an instance of \Zend\Form\Form */ 
foreach ($form as $element) { 

    // check if it's a form element or a fieldset etc. 
    // and recursively iterate over elements of fieldsets etc. 
} 
+0

ah gracias, tan simple, finalmente encontré donde se establece la interfaz IteratorAggregate (en FieldsetInterface), pero no encuentro los métodos actuales | next | prev para la iteración. así que nunca intenté buclear directamente sobre el objeto. – Rufinus

Cuestiones relacionadas