Domanda

Sto attraversando un momento incredibilmente difficile per decorare una forma Zend nel modo in cui ho bisogno. Questa è la struttura HTML di cui ho bisogno:

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

Il numero di righe nel corpo è determinato dalla mia struttura ad anello all'interno della mia classe di modulo. Tutti gli ID saranno unici ovviamente. Tutti i pulsanti di opzione nel modulo appartengono a un gruppo. Il mio problema è davvero che non sono sicuro di come creare e quindi modellare l'oggetto Zend_Form_Element_MultiCheckbox e Zend_Form_Element_Radio nella mia tabella. Dove / come dovrei applicare i decoratori appropriati alle caselle di controllo e ai pulsanti di opzione per avere una struttura del modulo come sopra?

La mia classe Form finora:

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

Ho provato alcune combinazioni di decoratori per la td e la tr, ma finora nessun successo.

Grazie per l'aiuto, molto apprezzato. JP Levac

È stato utile?

Soluzione

Ecco un tutorial per creare layout di tabella con decoratori di moduli zend: Tutorial - Crea Zend Framework Form con layout di tabella usando decoratori

Altri suggerimenti

Dai un'occhiata a questo articolo devzone . Spiegherà come funzionano i decoratori, quindi sai cosa sta succedendo e come scrivere il tuo, e poi termina con un esempio di tabella.

In questi due articoli c'è una buona spiegazione dei decoratori dell'autore di Zend_Form:

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top