2009-10-28 13 views
7

Zend formunu ihtiyaç duyduğum şekilde dekore etmek için inanılmaz derecede zor bir zaman geçiriyorum. Vücutta satır sayısı benim form sınıfının içinde benim döngü yapısı tarafından belirlenirZend Formu, tablo dekoratörleri

<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> 

: Bu benim ihtiyacı duyuyorum HTML yapıdır. Tüm kimlikleri elbette eşsiz olacak. Formdaki tüm radyo düğmeleri bir gruba aittir. Benim sorunum gerçekten nasıl oluşturmak ve sonra benim tablo içinde nesne Zend_Form_Element_MultiCheckbox ve Zend_Form_Element_Radio stil emin değilim. Yukarıdaki gibi bir form yapısına sahip olmak için uygun kod çözücüleri onay kutularına ve radyo düğmelerine nereye/nasıl uygularım? Bugüne kadar

My Form sınıfı: Ben td ve tr, ancak bugüne kadar hiçbir başarı için decoraters birkaç kombinasyonu denedim

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

.

Yardımlarınız için teşekkür ederiz, çok minnettarım. JP Levac

cevap

4

Bu devzone article'a bir bakın. Dekoratörlerin nasıl çalıştığını açıklar, böylece neler olduğunu ve nasıl yazacağınızı bilirsiniz ve sonra bir tablo örneği ile bitirir.

bu iki makalelerde Zend_Form yazarı dekoratörler bazı iyi bir açıklaması var:

+0

Kırık link bozuk. :( –

+1

@KevinPeno Zend'in yeni bir web sitesi var gibi görünüyor. Biçimlendirme bozuk ama [bu güncellenmiş sayfa] 'a bir göz atın (http://devzone.zend.com/1240/decorators-with-zend_form/). 'e özgün gönderi güncellendi –

+0

Teşekkürler @DavidCaunt –