Pregunta

Estoy teniendo un momento increíblemente difícil para decorar un Zend de la forma en que lo necesito. Esta es la estructura HTML que necesito:

<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á determinado por mi estructura de bucle dentro de mi clase de formulario. Todos los identificadores serán únicos, por supuesto. Todos los botones de radio en el formulario pertenecen a un grupo. Mi problema realmente 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 tabla. ¿Dónde / cómo aplicaría los decoradores apropiados a las casillas de verificación y los botones de opción para tener una estructura de formulario como la anterior?

Mi clase de formulario 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 intentado algunas combinaciones de decoradores para td y tr, pero no he tenido éxito hasta la fecha.

Gracias por cualquier ayuda, muy apreciada. JP Levac

¿Fue útil?

Solución

Aquí hay un tutorial para crear un diseño de tabla con decoradores de formularios zend: Tutorial - Crear formulario Zend Framework con diseño de tabla usando decoradores

Otros consejos

Eche un vistazo a este artículo de devzone . Explicará cómo funcionan los decoradores, para que sepa qué está sucediendo y cómo escribir los suyos, y luego termina con un ejemplo de tabla.

Hay una buena explicación de decoradores por parte del autor de Zend_Form en estos dos artículos:

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top