2009-10-28 5 views
7

J'ai un moment incroyablement difficile pour décorer une forme de Zend comme je le souhaite. Ceci est la structure HTML Je suis dans le besoin de:Zend Form, décorateurs de table

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

Le nombre de lignes dans le corps est déterminé par ma structure de mise en boucle dans ma classe de formulaire. Tous les identifiants seront uniques bien sûr. Tous les boutons radio du formulaire appartiennent à un groupe. Mon problème est vraiment que je ne sais pas comment créer puis styler l'objet Zend_Form_Element_MultiCheckbox et Zend_Form_Element_Radio dans ma table. Où/comment est-ce que j'appliquerais les décorateurs appropriés aux cases à cocher et aux boutons radio pour avoir une structure de formulaire comme ci-dessus?

Ma classe de formulaire à ce jour:

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

J'ai essayé quelques combinaison de Tapissier pour td et tr, mais sans succès à ce jour.

Merci pour toute aide, très appréciée. JP Levac

Répondre

4

Jetez un oeil à ce devzone article. Il explique comment les décorateurs fonctionnent, afin que vous sachiez ce qui se passe et comment écrire les vôtres, puis termine avec un exemple de table.

Il y a une bonne explication des décorateurs par l'auteur de Zend_Form dans ces deux articles:

+0

La liaison rompue est rompue. :( –

+1

@KevinPeno on dirait que Zend a un nouveau site web Le formatage est cassé mais jetez un coup d'oeil à [cette page mise à jour] (http://devzone.zend.com/1240/decorators-with-zend_form/). J'ai mis à jour le post original –

+0

Merci @DavidCaunt –