Ver Mensaje Individual
  #5 (permalink)  
Antiguo 12/02/2011, 21:53
Avatar de masterpuppet
masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 11 meses
Puntos: 845
Respuesta: Añadir otros elementos usando Zend_Form

El decorator ViewScript lo podes utilizar tanto para el form completo, que es el caso del primero link que te pase(la seccion dice algo asi como "Full Customization..."), como para un element, que es el caso del segundo link(la doc oficial), la ruta por defecto donde busca el .phtml es en script/views del modulo(aunque se puede setear otro modulo).

Te dejo un ejemplo ya que el elemento File es algo particular, el decorator File siempre ha de estar presente y la opción placement del viewscript debe estar a false.

application/forms/User.php
Código PHP:
Ver original
  1. class Application_Form_User extends Zend_Form
  2. {
  3.     public function init()
  4.     {
  5.         ...
  6.         $this->addElement('file', 'candy', array(            
  7.             'label' => 'Candy:'
  8.             'decorators' => array(
  9.                 array('File'),
  10.                 array('ViewScript', array(
  11.                     'viewScript' => '_element.phtml',                    
  12.                     'placement' => false))
  13.              ),
  14.             'description' => '<img src="' . $this->getView()->baseUrl($this->getModel()->Image->name) . '" alt="' . $this->getModel()->Image->realname . '" >',            
  15.         ));
  16.         ...
  17.     }
  18. }

application/views/scripts/_element.phtml
Código HTML:
Ver original
  1. <label for="<?php echo $this->element->getName(); ?>"
  2.        class="element <?php if ($this->element->hasErrors()): ?> error <?php endif; ?>"
  3.        id="label_<?php echo $this->element->getName(); ?>">    
  4. <span class="label"><?php echo $this->element->getLabel(); ?></span>
  5. <span class="avatar"><?php echo $this->element->getDescription(); ?></span>
  6. <?php echo $this->content; ?>
  7. <?php if ($this->element->hasErrors()): ?>
  8.     <span class="error">
  9.         <?php echo $this->formErrors($this->element->getMessages()); ?>
  10.     </span>
  11. <?php endif; ?>
  12. </label>l

Creo que esta todo, aunque se me puede haber pasado algo.

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)