2009-10-28 9 views
7

私は、必要な方法でZendフォームを飾るのは非常に困難です。これは、私が必要としているHTML構造体です:Zendフォーム、テーブルデコレータ

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

マイFormクラス:私はTDとTRが、現在までの成功のためのdecoratersのいくつかの組み合わせを試してみました

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' 
    )); 
    } 
} 

ご協力いただきありがとうございます、非常に高く評価されています。 JP Levac

答えて

4

このをご覧ください。デコレータがどのように動作するかを説明するので、何が起きているのか、自分自身を書く方法を知ってから、テーブルの例で終わります。

Zend_Formの著者によってデコレータのいくつかの良い説明は、これら2件の記事にあります。ここでは

+0

壊れたリンクが壊れています。 : –

+1

@KevinPeno Zendが新しいウェブサイトを持っているようです。フォーマットは壊れていますが、[こちらの更新されたページ](http://devzone.zend.com/1240/decorators-with-zend_form/)をご覧ください。元の投稿を更新しました。 –

+0

ありがとう@DavidCaunt –

関連する問題