Zend Form, table decorators

Posted by levacjeep on Stack Overflow See other posts from Stack Overflow or by levacjeep
Published on 2009-10-28T14:38:59Z Indexed on 2010/05/25 20:01 UTC
Read the original article Hit count: 653

Hello, I am having an incredibly difficult time to decorate a Zend form the way I need to. This is the HTML structure I am in need of:

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

The number of rows in the body is determined by my looping structure inside my form class. All ids will be unique of course. All radio buttons in the form belongs to one group. My issue really is that I am unsure how to create and then style the object Zend_Form_Element_MultiCheckbox and Zend_Form_Element_Radio inside my table. Where/how would I apply the appropriate decoraters to the checkboxes and radio buttons to have a form structure like above?

My Form class so far:

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

I have tried a few combination of decoraters for the td and tr, but no success to date.

Thank you for any help, very appreciated. JP Levac

© Stack Overflow or respective owner

Related posts about zend-framework

Related posts about zend