2009-10-28 22 views
7

Estoy teniendo un momento increíblemente difícil para decorar un formulario Zend de la manera que necesito. Esta es la estructura HTML Estoy en la necesidad de:Zend Form, decoradores de mesa

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

El número de filas en el cuerpo está determinada por mi estructura de bucle dentro de mi clase de formulario. Todos los identificadores serán únicos, por supuesto. Todos los botones de opción en el formulario pertenecen a un grupo. Mi problema es que no estoy seguro de cómo crear y luego diseñar el objeto Zend_Form_Element_MultiCheckbox y Zend_Form_Element_Radio dentro de mi mesa. ¿Dónde/cómo debería aplicar los decoradores apropiados a las casillas de verificación y botones de radio para tener una estructura de formulario como la de arriba?

Mi clase Form hasta ahora:

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

he probado unos pocos combinación de decoraters para el TD y TR, pero sin éxito hasta la fecha.

Gracias por cualquier ayuda, muy apreciada. JP Levac

Respuesta

4

Echa un vistazo a este devzone article. Explicará cómo funcionan los decoradores, para que sepa qué está sucediendo y cómo escribir el suyo, y luego termina con un ejemplo de tabla.

Hay un poco de buena explicación de decoradores por el autor de Zend_Form en estos dos artículos:

+0

El enlace roto está roto. :( –

+1

@KevinPeno parece que Zend tiene un nuevo sitio web. El formato está roto pero échele un vistazo a [esta página actualizada] (http://devzone.zend.com/1240/decorators-with-zend_form/). He actualizado la publicación original. –

+0

Gracias @DavidCaunt –

Cuestiones relacionadas