2011-09-28 14 views
6

Tengo el problema de que el siguiente Formulario Zend arroja un error. El problema es el elemento "file" y el uso de setElementDecorators.Zend File Upload y Element Decorators

class Products_AddForm extends Zend_Form 
{ 
    function init() { 

     // other form elements... 

     $uploadElement = new Zend_Form_Element_File('Excel'); 
     $uploadElement->setLabel('Excel'); 
     $this->addElement($uploadElement); 

     $this->setElementDecorators(array(
      'ViewHelper', 
      'Errors', 
      array(array('data' => 'HtmlTag'), array('tag' => 'td')), 
      array('Label', array('tag' => 'th')), 
      array(array('row' => 'HtmlTag'), array('tag' => 'tr')) 
     )); 



    } 
} 

Esto arroja un error.

(Warning: Exception caught by form: No file decorator found... unable to render file element Stack Trace: #0) 

Adición $uploadElement->addDecorator('File'); al final después de la SetElementDecorators va a funcionar, pero esto me dará el elemento de archivo dos veces!

¿Alguien puede ayudar, por favor?

TIA Matt

Respuesta

10

El elemento de Archivo necesita su propio decorador - Zend_Form_Decorator_File.

$this->setElementDecorators(array(
     'File', 
     'Errors', 
     array(array('data' => 'HtmlTag'), array('tag' => 'td')), 
     array('Label', array('tag' => 'th')), 
     array(array('row' => 'HtmlTag'), array('tag' => 'tr')) 
)); 

[editar]

Acabamos dado cuenta de que también está usando otros elementos de forma.

Después de su código original, añade:

$this->getElement('Excel')->setDecorators(
    array(
     'File', 
     'Errors', 
     array(array('data' => 'HtmlTag'), array('tag' => 'td')), 
     array('Label', array('tag' => 'th')), 
     array(array('row' => 'HtmlTag'), array('tag' => 'tr')) 
    ) 
); 

De esta manera, se añade ViewHelper a todos los demás elementos, y para su elemento del archivo se utiliza en su lugar.

+0

Gracias 4 ur help. Agregando esto lanza: Advertencia: Excepción capturada por formulario: Método getMaxFileSize no existe Stack Trace: # 0 – frgtv10

+0

Ha actualizado mi respuesta :) –

+0

que funciona. ¿Ha notado esto en los documentos de Zend? :/ ¡GRACIAS! – frgtv10

Cuestiones relacionadas