2012-08-30 8 views
5

Zend Form 2は、フィールドセット内のすべての要素を構造化します。 (Zendの\フォーム\フォームフィールドセットを拡張 - フォーム::呼び出しの親を追加::追加)私はちょうど私がフィールドセットを使用する場合、私は追加された順にフォーム要素をループする

経由でそれらを得ることができ $form->getElements()経由でそれらを得ることができますフォームに要素を追加した場合

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

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

どのように要素/フィールドセットを正しい順序で取得できますか?

これの背後にある理由は、私はビューヘルパーへの簡単な呼び出しでフォームを印刷できるビューヘルパーに取り組んでいます。すべてのヘルプははるかに高く評価されて

-

私はformRow() (プレゼンテーションからロジックを分離、私はForm2の背後にある考え方を知っている)に呼び出しを介して、すべてのフォーム要素をコールする必要はありません。 TIA

答えて

9

あなたは、彼らがフォームに追加された順序で要素とフィールドセットを取得するために次の操作を行うことができますのIteratorAggregateインターフェイスはFieldsetInterfaceに(設定されているところ

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

ああおかげで、とても簡単に、私は最終的に見つかりました)、しかし、私は現在の|次の|前の反復のメソッドを見つけられません。だから私は直接オブジェクトをループすることはなかった。 – Rufinus

関連する問題