Ver Mensaje Individual
  #1 (permalink)  
Antiguo 09/12/2010, 10:41
niewpendejo
 
Fecha de Ingreso: agosto-2009
Mensajes: 138
Antigüedad: 15 años, 4 meses
Puntos: 0
Problemas al aplicar un Decorator en Zend

He creado un formulario y cuando quiero aplicarle el decorador no se muestra en la vista , sino se lo aplico renderiza perfectamente, asi que el problema esta en el decorador..

En el controlador tengo esto:
Código PHP:
$form = new Admin_Form_Interesados();
      
  

 
$form->addPrefixPath('Admin_Forms_Decorators''Admin/Forms/Decorators/Interesados''Interesados');
$this->view->form
Donde creo el formulario esto:
Código PHP:
class Admin_Form_Interesados extends Zend_Form{

  protected 
$form;
  public function  
__construct($options null) {
    
parent::__construct($options);

    
//$this->setName('interesados');

  
  // $this->addPrefixPath('Admin_Form_Decorator_Interesados', 'Admin/Form/Decorator/Interesados','decorator');


    
$nombre = new Zend_Form_Element_Text('nombre');
    
$nombre->setLabel('Nombre')
            ->
setRequired(true)
            ->
addFilter('StringTrim');

    
    
$nif = new Zend_Form_Element_Text('nif');
    
$nif->setLabel('Nif/CIF')
        ->
setRequired(true)
        ->
addFilter('StringTrim');

    
$email = new Zend_Form_Element_Text('email');
    
$email->setLabel('Email')
          ->
setRequired(true);

    
$this->addElements(array($nombre,$nif,$email));
    
    
$this->setDecorators(array('FormElements',array('HtmlTag',
                         array(
'tag'=>'dl','class'=>'Zend  ')),
                         array(
'Interesados',array(
                                                  
'placement'=>'PREPEND','text'=>'Estos campos son obligatorios')),
                         
'Form')) ;
  } 
Y en mi Decorador lo siguiente.
Código PHP:
class Admin_Forms_Decorators_Interesados extends Zend_Form_Decorator_Abstract
{

  protected 
$_placement 'PREPEND';
  
  public function 
buildLabel($content){

    
    if(
null===($element $this->getElement())){
      return 
$content;
    }

    
$label $element->getName();
    if(
$element->isRequired()){
      
$text $this->getOption('text');
      
$output '<p class="requerido"> ' $text .  '</p>';
      
$label .= '*';
    }

    
$label .= ':';

   if (
null === ($view $element->getView())) {
      return 
$this->render($content$label);
   }
   
   
$label $view->formLabel($element->getName(), $label);

   return 
$this->render($content$label);
  }


   public function 
render($content,$newContent=null,$output=null)
   {
     
     
$separator $this->getSeparator();
     
$placement $this->getPlacement();

     
$output $this->buildLabel();
     
     switch (
$placment) {
        case 
'APPEND':
            
// append original content with new content
            
return $output $content $separator $newContent;
        case 
'PREPEND':
            
// prepend original content with new content
            
return $newContent $separator $content $output;
        default:
            
// replace otherwise
            
return $newContent;
     }
     

   }

  


Cual puede ser el problema.