按照添加的顺序遍历表单元素

时间:2012-08-30 09:50:13

标签: zend-framework2 zend-form2

Zend Form 2构建了Fieldsets中的所有元素。 (Zend \ Form \ Form扩展Fieldset - Form :: add调用parent :: add)

如果我只是将元素添加到表单中,我可以通过$form->getElements()获取它们如果我使用字段集我可以通过

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

但想象一下我添加一些隐藏字段,然后是字段集,最后是一个提交按钮的表单。

如何以正确的顺序获取元素/字段集?

这背后的原因,我正在开发一个视图帮助器,它允许我通过简单的调用方式打印表单。

我不想通过调用formRow()来调用每个表单元素 (我知道Form2背后的概念 - 将逻辑与表示分离)

非常感谢任何帮助。 TIA

1 个答案:

答案 0 :(得分:9)

您可以执行以下操作,按照添加到表单中的顺序获取元素和字段集:

/* $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.
}