2013-04-04 1 views
5

私はフィールドセットでフォームを持っている:ZF2フォームフィールドセットでコンテンツをラップする方法は?

$formConfig = array(
    'fieldsets' => array(
     ... 
    ); 
); 

$factory = new Zend\Form\Factory(); 
$form = $factory->createForm($formConfig); 
echo $this->form($form); 

それはこのような何かレンダリング:問題は、私は伝説の後にコンテンツをラップする必要があるということです

<form> 
    <fieldset> 
     <legend>Fieldset label</legend> 
     <label><span>Elem 1</span><input type="text" name="f1[el1]" /></label> 
     <label><span>Elem 2</span><input type="text" name="f1[el2]" /></label> 
     <label><span>Elem 3</span><input type="text" name="f1[el3]" /></label> 
    </fielset> 
</form> 

を:

<form> 
    <fieldset> 
     <legend>Fieldset label</legend> 
     <div class="wrapper"> 
      <label><span>Elem 1</span><input type="text" name="f1[el1]" /></label> 
      <label><span>Elem 2</span><input type="text" name="f1[el2]" /></label> 
      <label><span>Elem 3</span><input type="text" name="f1[el3]" /></label> 
     <div> 
    </fielset> 
</form> 

どのようにすることができますそれを行う?

答えて

14

もう一度、Zend\Form\FieldsetがHTMLと等しくないことを理解する必要があります。<fieldset>! A Zend\Form\Fieldsetは、通常は1つのエンティティを表すZend\Form\Elementのコレクションであり、1つのフォームのデータを複数のエンティティに提供することができます。

フォームのレンダリングについては、最初に学ぶべきことはいくつかのZend\Form\View\Helperクラスです。 form()ビューヘルパーを使用しています。とZend\Form\Fieldsetを使用してすべてZend\Form\ElementformCollection()で自動的に変換します。しかし、あなたはそれをしたくありません!

希望する出力が必要な場合は、自分でフォームをレンダリングする必要があります。このような何かがあなたのビュー・テンプレートのようになります。

<?=$this->form()->openTag($form);?> 
    <fieldset> 
     <div class="wrapper"> 
      <?=$this->formRow($form->get('f1')->get('el1'));?> 
      <?=$this->formRow($form->get('f1')->get('el2'));?> 
      <?=$this->formRow($form->get('f1')->get('el3'));?> 
     </div> 
    </fieldset> 
<?=$this->form()->closeTag();?> 

あなたがformRow()を使用しているはずだと、これはもう、その中に少し快適さを持っています。また、各フォーム行を分割等が非常にdetailled道に行くことができる:でもそこ

<label> 
    <span><?=$this->formLabel($form->get('f1')->get('el1'));?></span> 
    <?=$this->formInput($form->get('f1')->get('el1'));=> 
    <?=$this->formElementErrors($form->get('f1')->get('el1'));?> 
</label> 

を、formInput()はまだformText()formSelect()formTextarea()、などのようなものに派生魔法..です、など。

+2

+1フィールドセットの明確化。 ZF2コミュニティの一部では、どんな恐ろしい命名の選択肢か。なぜ、FieldCollectionを使用しないと、あまりあいまいで混乱しないでしょうか? – Xunnamius

関連する問題