zend-framework zend-form zend-file

zend framework - Zend File Upload y Element Decorators



zend-framework zend-form (1)

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

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 )

Agregar $uploadElement->addDecorator(''File''); al final, después de que SetElementDecorators funcione, ¡pero esto me dará el elemento de archivo dos veces!

¿Alguien puede ayudar, por favor?

TIA Matt


El elemento Archivo requiere 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]

Acabo de notar que también está usando otros elementos de formulario.

Después de su código original, agregue:

$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 forma, ViewHelper se agrega a todos los demás elementos y, en su lugar, se usa el archivo de elementos de archivo.