2012-03-21 2 views
2

私のコードは次のようになります。Zend Form Decoratorを使用してすべての入力とラベルをdivに入れる方法は?

$this->setElementDecorators(array(
    array('ViewHelper'), 
    array('Errors', array('tag' => 'div', 'class' => 'error')), 
    array('Label', array('tag' => 'span')), 
    array('HtmlTag', array('tag' => 'div')) 
)); 

そして、それは私を与える:

<div> 
    <div id="email-label"><label for="email" class="required">First name:</label></div> 
    <input type="text" name="email" id="email" value="" /> 
</div> 
<div> 
    <div id="email-label"><label for="email" class="required">Last name:</label></div> 
    <input type="text" name="email" id="email" value="" /> 
</div> 

しかし、私はこのように指定したクラスとdiv要素のすべてを持っているしたいと思います:どのように

<div class="item"> 
    <div class="label"><label for="email" class="required">First name:</label></div> 
    <div class="element"><input type="text" name="email" id="email" value="" /></div> 
</div> 
<div class="item"> 
    <div class="label"><label for="email" class="required">Last name:</label></div> 
    <div class="element"><input type="text" name="email" id="email" value="" /></div> 
</div> 

私はこれをすることができますか?私はマニュアルを読んで、私は:(より多くのアイデアを持っている

+0

これを確認してください:http://stackoverflow.com/questions/7546135/zend-framework-decorators-wrap-label-and-viewhelper-inside-a-div –

答えて

4

しようとしないでください:あなたは、フォームをレンダリングするときに

$this->setElementDecorators(array(
    array('ViewHelper'), 
    array('Errors', array('tag' => 'div', 'class' => 'error')), 
    array('Label', array('tag' => 'span')), 
    array('HtmlTag', array('tag' => 'div', 'class' => 'label')), 
)); 

そして、手動でこのようにそれをレンダリング:

<div class="form"> 
    <form method="<?php echo $this->form->getMethod() ?>" 
      action="<?php echo $this->form->getAction() ?>"> 

     <div class="item"> 
      <?php echo $this->form->firstName ?></div> 
     </div> 

     <div class="item"> 
      <?php echo $this->form->lastName ?></div> 
     </div> 

     // the rest of your elements... 

     <?php echo $this->form->submit ?> 
    </form> 
</div> 

出力中ビューの個々のフォーム要素を使用すると、フォームの出力をより詳細に制御でき、要素がどこに表示されるか、それらがラップされるHTMLをより詳細に制御できます。

可能な限り、私は短い<?php echo $this->form ?>を使用しますが、私のフォームの多くは好きであり、私は自分の要素デコレータと組み合わせてカスタムマークアップを使用して、フォームを正確に見たいようにします。

Using ViewScript Decorator on Nested Subforms (Zend Form)およびHow To Remove All DtDdWrappers and Labels on Zend Form Elementsも参照してください。

関連する問題