2012-08-30 13 views
5

Zend Form 2 struttura tutti gli elementi in Fieldsets. (Zend \ Form \ Modulo estende Fieldset - Modulo :: aggiungere le chiamate parent :: aggiungere)Passa attraverso gli elementi del modulo nell'ordine in cui sono stati aggiunti

se ho appena aggiungere elementi al modulo I loro possono ottenere attraverso $form->getElements() se io uso un fieldset posso ottenere loro via

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

Ma immagina un modulo in cui aggiungo alcuni campi nascosti, quindi un fieldset e infine un pulsante di invio.

Come posso ottenere gli elementi/set di campi nel loro ordine corretto?

Motivo di ciò, sto lavorando a un helper di visualizzazione che mi consente di stampare moduli tramite una semplice chiamata al view helper.

Non voglio chiamare ogni elemento forma tramite una chiamata a formRow() (non conosco il concetto dietro Form2 - separare la logica dalla presentazione)

Ogni aiuto è molto apprezzato. TIA

risposta

9

è possibile effettuare le seguenti operazioni per ottenere gli elementi e fieldsets nell'ordine in cui sono stati aggiunti al modulo:

/* $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 grazie, in modo semplice, ho finalmente trovato in cui è impostato l'interfaccia IteratorAggregate (in FieldsetInterface), ma non trovo i metodi attuali | next | prev per l'iterazione. quindi non ho mai provato a ricollegare direttamente l'oggetto. – Rufinus