5

Zend Form 2は、フィールドセット内のすべての要素を構造化します。(Zend \ Form\FormはFieldsetを拡張します-Form::addはparent::addを呼び出します)

フォームに要素を追加するだけで$form->getElements()、フィールドセットを使用して取得できます。

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

しかし、いくつかの非表示フィールドを追加し、次にフィールドセットを追加し、最後に送信ボタンを追加するフォームを想像してみてください。

要素/フィールドセットを正しい順序で取得するにはどうすればよいですか?

この背後にある理由は、ビューヘルパーを呼び出すだけでフォームを印刷できるビューヘルパーに取り組んでいることです。

の呼び出しを介してすべてのフォーム要素を呼び出したくありませんformRow() (Form2の背後にある概念を知っています-ロジックをプレゼンテーションから分離します)

どんな助けでも大歓迎です。TIA

4

1 に答える 1

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.
}
于 2012-08-30T20:21:01.757 に答える