2009-10-28 2 views
7

Ich habe eine unglaublich schwierige Zeit, um eine Zend Form so zu gestalten, wie ich es brauche. Dies ist die HTML-Struktur ich in Not bin:Zend Form, Tischdekoration

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

Die Anzahl der Zeilen im Körper durch meine Looping Struktur in meiner Formularklasse bestimmt wird. Alle IDs werden natürlich eindeutig sein. Alle Optionsfelder im Formular gehören zu einer Gruppe. Mein Problem ist wirklich, dass ich unsicher bin, wie ich das Objekt Zend_Form_Element_MultiCheckbox und Zend_Form_Element_Radio in meiner Tabelle erstellen und dann stylen kann. Wo/wie würde ich die entsprechenden Verzierungen auf die Kontrollkästchen und Optionsfelder anwenden, um eine Formularstruktur wie oben zu haben?

Meine Form-Klasse bisher:

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

ich einige Kombination von decoraters für die td und tr versucht, aber ohne Erfolg bisher.

Vielen Dank für jede Hilfe, sehr geschätzt. JP Levac

Antwort

4

Werfen Sie einen Blick auf diese devzone article. Es wird erklärt, wie Dekoratoren funktionieren, damit Sie wissen, was passiert und wie Sie Ihre eigenen schreiben und dann mit einem Tabellenbeispiel abschließen.

Es gibt einige gute Erklärung von Dekorateure vom Autor von Zend_Form in diesen beiden Artikeln:

+0

Defekte Verbindung ist unterbrochen. :( –

+1

@KevinPeno es sieht aus wie Zend haben eine neue Website. Die Formatierung ist kaputt, aber werfen Sie einen Blick auf [diese aktualisierte Seite] (http://devzone.zend.com/1240/decorators-with-zend_form/) habe den ursprünglichen Beitrag aktualisiert. –

+0

Dank @DavidCaunt –