Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Loop through Form Elements in the order they were added

Zend Form 2 structures all Elements in Fieldsets. (Zend\Form\Form extends Fieldset - Form::add calls parent::add )

If i just add Elements to the Form i can get them via $form->getElements() if i use a fieldset i can get them via

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

But imagine a form where i add a few hidden fields, then a fieldset, and at last a submit button.

How can i get the elements/fieldsets in their right order ?

Reason behind this, I'm working on a view helper which lets me print forms via a simple call to the view helper.

I don't want to call every form element via a call to formRow() (I know of the concept behind Form2 - separating logic from presentation)

Any help is much appreciated. TIA

like image 795
Rufinus Avatar asked Aug 30 '12 09:08

Rufinus


1 Answers

you can do the following to get elements and fieldsets in the order they were added to the form:

/* $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.
}
like image 150
Andreas Linden Avatar answered Sep 23 '22 15:09

Andreas Linden