0
$elementDecoration = array(
        'ViewHelper',
        'Description',
        'Errors',
        array(array('data'=>'HtmlTag'), array('tag' => 'td', 'valign' => 'TOP')),
        array('Label', array('tag' => 'td')),
        array('Errors'),
        array(array('row'=>'HtmlTag'),array('tag'=>'tr'))
            );


        $username = new Zend_Form_Element_Text('username');
        $username->setLabel('username')
        ->setDecorators($elementDecoration)
        ->setRequired(true)
        ->addFilter('StripTags')
        ->addFilter('StringTrim')
        ->addValidator('NotEmpty');

以下のような出力

<tr>
    <td id="username-label">
        <label for="username" class="required">username</label>
    </td>
<td valign="TOP">
    <input type="text" name="username" id="username" value="">
        <ul class="errors"><li>Value is required and can't be empty</li></ul>
    </td>
</tr>

しかし、私は以下のような出力が欲しい

  <tr>
    <td>User Name:</td>
  </tr>
  <tr>
    <td colspan=2><input name="username"/></td>
  </tr>
  <tr>
    <td class="error_msg" colspan=2>Required</td>
  </tr>
  1. 同様に、私は上記と同じように欲しいです。
  2. 同様に、ulliを削除したい。
4

1 に答える 1

0

以下を読んで理解してください。

フォームをテーブルにレンダリングするには:

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

さらに、要素とラベルがテーブルデータとテーブル行にあることを確認する必要があります。

$form->setElementDecorators(array(
    'ViewHelper',
    'Errors',
    array('decorator' => array('td' => 'HtmlTag'), 'options' => array('tag' => 'td')),
    array('Label', array('tag' => 'td')),
    array('decorator' => array('tr' => 'HtmlTag'), 'options' => array('tag' => 'tr')),
));

「送信」ボタンの場合、送信が両方の列にまたがるようにデコレータを変更する必要があります。

 $form->submit->setDecorators(array(
        array(
            'decorator' => 'ViewHelper',
            'options' => array('helper' => 'formSubmit')),
        array(
            'decorator' => array('td' => 'HtmlTag'),
            'options' => array('tag' => 'td', 'colspan' => 2)),
        array(
            'decorator' => array('tr' => 'HtmlTag'),
            'options' => array('tag' => 'tr')),
    )); 

上記のコードは、以下のようなテーブルを提供します。これで、必要に応じて編集できます。最初のテーブル構造は1列のみで、2番目のテーブル構造はcolspan = 2であるため、最後のテーブル構造は明確ではありませんでした。

<form>
 <table>
   <tr>
   <td>Label</td>
   <td><input type="text" name="test"></td>
  </tr>
  <tr>
   <td colspan=2><input type="submit"></td>
  </tr>
 </table>
</form> 
于 2013-03-06T09:51:18.747 に答える