Ver Mensaje Individual
  #1 (permalink)  
Antiguo 05/09/2008, 13:01
gabyrsh
 
Fecha de Ingreso: mayo-2005
Mensajes: 257
Antigüedad: 19 años, 6 meses
Puntos: 1
Consulta + Decorator personalizado Composite + Zend Form

Hola chicos, tengo la siguiente duda, quiero aplicar el ejemplo de la documentacion.
La cual proponen la siguiente clase para customizar un decorador:

Código PHP:
class My_Decorator_Composite extends Zend_Form_Decorator_Abstract
{
    public function 
buildLabel()
    {
        
$element $this->getElement();
        
$label $element->getLabel();
        if (
$translator $element->getTranslator()) {
            
$label $translator->translate($label);
        }
        if (
$element->isRequired()) {
            
$label .= '*';
        }
        
$label .= ':';
        return 
$element->getView()
                       ->
formLabel($element->getName(), $label);
    }

    public function 
buildInput()
    {
        
$element $this->getElement();
        
$helper  $element->helper;
        return 
$element->getView()->$helper(
            
$element->getName(),
            
$element->getValue(),
            
$element->getAttribs(),
            
$element->options
        
);
    }

    public function 
buildErrors()
    {
        
$element  $this->getElement();
        
$messages $element->getMessages();
        if (empty(
$messages)) {
            return 
'';
        }
        return 
'<div class="errors">' .
               
$element->getView()->formErrors($messages) . '</div>';
    }

    public function 
buildDescription()
    {
        
$element $this->getElement();
        
$desc    $element->getDescription();
        if (empty(
$desc)) {
            return 
'';
        }
        return 
'<div class="description">' $desc '</div>';
    }

    public function 
render($content)
    {
        
$element $this->getElement();
        if (!
$element instanceof Zend_Form_Element) {
            return 
$content;
        }
        if (
null === $element->getView()) {
            return 
$content;
        }

        
$separator $this->getSeparator();
        
$placement $this->getPlacement();
        
$label     $this->buildLabel();
        
$input     $this->buildInput();
        
$errors    $this->buildErrors();
        
$desc      $this->buildDescription();

        
$output '<div class="form element">'
                
$label
                
$input
                
$errors
                
$desc
                
'</div>';

        switch (
$placement) {
            case (
self::PREPEND):
                return 
$output $separator $content;
            case (
self::APPEND):
            default:
                return 
$content $separator $output;
        }
    }


Esto yo lo grabé en un archivo My_Decorator.php, en mi siguiente arbol:
Código PHP:
app
    
-modules
                
-frontend
                             
-models
                                         
-My_Decorator.php 
Entonces, me surge el siguiente problema, para usarlo pongo:

Código PHP:
$participante $this->createElement('text''participante');
$participante->addPrefixPath('My_Form_Decorator''My/Form/Decorator/''decorator');
$participante->setDecorators(array('Composite')); 

y me devuelve el siguiente error:

Código:
Warning: Plugin by name Composite was not found in the registry
Como puedo solucionarlo??? Estoy medio perdido. Supongo que estoy configurando mal la ruta, pero no entiendo, como tendría que ir.

Tambien, en donde me recomiendan guardarlo??

Desde ya, un abrazo