2009-10-28 50 views
7

我有一個難以置信的困難時間來裝飾我需要的Zend窗體。這是我需要的HTML結構:Zend表格,表格裝飾器

<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都是唯一的。表單中的所有單選按鈕都屬於一個組。我的問題實際上是我不確定如何創建表格並在表格中設置對象樣式Zend_Form_Element_MultiCheckbox和Zend_Form_Element_Radio。我在哪裏/如何將適當的修飾器應用於複選框和單選按鈕,以獲得如上所述的表單結構?

我的Form類到目前爲止:

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

我曾嘗試decoraters對於TD和TR,但沒有成功至今的幾個組合。

謝謝你的幫助,非常感謝。 JP Levac

回答

4

看看這個devzone article。它會解釋裝飾器是如何工作的,所以你知道發生了什麼以及如何編寫你自己的,然後完成一個表格的例子。

有由Zend_Form中的作者在這兩篇文章中裝飾的一些很好的解釋:

+0

斷開的鏈接已損壞。 :( – 2011-11-14 07:46:39

+1

@KevinPeno它看起來像Zend有一個新的網站。格式化被打破,但看看[這個更新的頁面](http://devzone.zend.com/1240/decorators-with-zend_form/)。已更新原始帖子。 – 2011-11-14 09:58:56

+0

感謝@DavidCaunt – 2011-11-14 11:06:11