7

Zendフォームを必要な方法で装飾するのに非常に苦労しています。これは私が必要としている HTML 構造です:

<table>
<thead><tr><th>one</th><th>two</th><th>three</th><th>four</th></thead>
<tbody>
<tr>
 <td><input type='checkbox' id='something'/></td>
 <td><img src='src'/></td>
 <td><input type='text' id='something'/></td>
 <td><input type='radio' group='justonegroup'/></td>
</tr>
<tr>
 <td><input type='checkbox' id='something'/></td>
 <td><img src='src'/></td>
 <td><input type='text' id='something'/></td>
 <td><input type='radio' group='justonegroup'/></td>
</tr>
</tbody>
</table>

本文の行数は、フォーム クラス内のループ構造によって決まります。もちろん、すべてのIDは一意です。フォーム内のすべてのラジオ ボタンは、1 つのグループに属します。私の問題は、テーブル内でオブジェクト Zend_Form_Element_MultiCheckbox と Zend_Form_Element_Radio を作成してスタイルを設定する方法がわからないことです。上記のようなフォーム構造を持つために、チェックボックスとラジオボタンに適切なデコレータをどこ/どのように適用しますか?

これまでの私のフォームクラス:

class Form_ManageAlbums extends Zend_Form
{
  public function __construct($album_id)
  {
    $photos = Model_DbTable_Photos::getAlbumPhotos($album_id);

    $selector = new Zend_Form_Element_MultiCheckbox('selector');

    $radio = new Zend_Form_Element_Radio('group');

    $options = array();

    while($photo = $photos->fetchObject())
    {

      $options[$photo->id] = '';

      $image = new Zend_Form_Element_Image('image'.$photo->id);
      $image->setImageValue('/dog/upload/'.$photo->uid.'/photo/'.$photo->src);

      $caption = new Zend_Form_Element_Text('caption'.$photo->id);
      $caption->setValue($photo->caption);

      $this->addElements(array($image, $caption));
    }

    $selector->addMultiOptions($options);
    $radio->addMultiOptions($options);

    $this->addElement($selector);

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

td と tr のデコレータの組み合わせをいくつか試しましたが、今のところ成功していません。

助けてくれてありがとう、とても感謝しています。JPレバク

4

2 に答える 2

11

zendフォームデコレータを使用してテーブルレイアウトを作成するためのチュートリアルは次のとおりです。チュートリアル-デコレータを使用してテーブルレイアウトを使用してZendFrameworkフォームを作成する

于 2010-08-10T07:18:53.500 に答える
4

このdevzone articleをご覧ください。デコレータがどのように機能するかを説明するので、何が起こっているのか、独自の記述方法を理解できるようになり、最後にテーブルの例を示します。

以下の 2 つの記事で、Zend_Form の作成者によるデコレータの適切な説明があります。

于 2009-10-30T23:19:59.890 に答える