0

Zend Framework での開発は初めてです。フォームデコレータについていくつか調査しましたが、特定のものが必要です。

これは私が欲しいものです:

<table>
<tr>
    <td colspan="2">
        <ul class="errors">
            <li>error</li>
        </ul>
     </td>
</tr>
<tr>
   <td>Label :</td>
   <td>input field</td>
</tr>
<tr>
   <td></td>
   <td>Submit Button</td>
</tr>
</table>

私が持っているものは次のとおりです。

   $this->setElementDecorators(array(
        'ViewHelper',
        array(array('data' => 'HtmlTag'), array('tag' => 'td', 'class' => 'element')),
        array('Label', array('tag' => 'td')),
        array(array('row' => 'HtmlTag'), array('tag' => 'tr'))
    ));

    $submit->setDecorators(array('ViewHelper',
        array(array('data' => 'HtmlTag'), array('tag' => 'td', 'class' => 'element')),
        array(array('emptyrow' => 'HtmlTag'), array('tag' => 'td', 'class' => 'element', 'placement' => 'PREPEND')),
        array(array('row' => 'HtmlTag'), array('tag' => 'tr'))
    ));

    $this->setDecorators(array(
        'FormElements',
        'Errors'
        array('HtmlTag', array('tag' => 'table')),
        'Form'
    ));

しかし、htmlspecialchar 警告が表示され、ul は空です。

これを修正する可能性はありますか?

4

1 に答える 1

0

検証エラーはフォームではなく個々の入力に関連付けられているため、デコレーターのみを使用してこれを機能させるのは難しいと思います。

ビュー スクリプトで、個々のフォーム要素と検証エラーを別々にレンダリングするだけです。表示するエラーを自分で準備し、デコレータを完全に取り除き、ViewHelper だけに固執する必要があります。次に、これを行うことができます:

<form method="post">
  <table>
  <tr>
    <td colspan="2"><?php echo $this->errors; ?></td>
  </tr>
  <tr>
    <td><?php echo $this->form->foo->getLabel(); ?></td>
    <td><?php echo $this->form->foo; ?></dt>
  </tr>
  </table>
</form>
于 2012-07-26T09:53:28.617 に答える