2

I have a simple zend form

class Form_Upload extends Zend_Form { private $_networks = array(); private $_reportYear; public function __construct($options) { if (array_key_exists('networks', $options)) { $this->_networks = $options['networks']; unset($options['networks']); } if (array_key_exists('reportYear', $options)) { $this->_reportYear = $options['reportYear']; unset($options['reportYear']); } parent::__construct($options); } public function init() { $this->setMethod(Zend_Form::METHOD_POST); $this->setAttrib('enctype', 'multipart/form-data'); $this->setDecorators(array( 'FormElements', array('HtmlTag', array('tag' => 'table')), 'Form' )); // Report year $reportYear = new Zend_Form_Element_Hidden('ReportYear'); $reportYear->setValue($this->_reportYear); $this->addElement($reportYear); // Station File $stationFile = new Zend_Form_Element_File('StationFile'); $stationFile->setLabel('Station File') ->setMaxFileSize(102400) ->addValidator('Extension', false, 'csv') ->setValueDisabled(true); $this->addElement($stationFile); $stationFileNetwork = new Zend_Form_Element_Select('StationFileNetwork'); $stationFileNetwork->setLabel('Network') ->addMultiOptions($this->_networks); $this->addElement($stationFileNetwork); $stationFileComment = new Zend_Form_Element_Textarea('StationFileComment'); $stationFileComment->setLabel('Comments') ->setAttrib('cols', 30) ->setAttrib('rows', 5); $this->addElement($stationFileComment); // Configuration File $configurationFile = new Zend_Form_Element_File('ConfigurationFile'); $configurationFile->setLabel('Configuration File') ->setMaxFileSize(102400) ->addValidator('Extension', false, 'csv') ->setValueDisabled(true); $this->addElement($configurationFile); $configurationFileNetwork = new Zend_Form_Element_Select('ConfigurationFileNetwork'); $configurationFileNetwork->setLabel('Network') ->addMultiOptions($this->_networks); $this->addElement($configurationFileNetwork); $configurationFileComment = new Zend_Form_Element_Textarea('ConfigurationFileComment'); $configurationFileComment->setLabel('Comments') ->setAttrib('cols', 30) ->setAttrib('rows', 5); $this->addElement($configurationFileComment); // Measurement File $measurementFile = new Zend_Form_Element_File('MeasurementFile'); $measurementFile->setLabel('Measurement File') ->setMaxFileSize(102400) ->addValidator('Extension', false, 'csv') ->setValueDisabled(true); $this->addElement($measurementFile); $measurementFileNetwork = new Zend_Form_Element_Select('MeasurementFileNetwork'); $measurementFileNetwork->setLabel('Network') ->addMultiOptions($this->_networks); $this->addElement($measurementFileNetwork); $measurementFileComment = new Zend_Form_Element_Textarea('MeasurementFileComment'); $measurementFileComment->setLabel('Comments') ->setAttrib('cols', 30) ->setAttrib('rows', 5); $this->addElement($measurementFileComment); // Submit $submit = new Zend_Form_Element_Submit('Upload'); $submit->setLabel('Upload'); $this->addElement($submit); $this->setElementDecorators(array( 'ViewHelper', 'Errors', array(array('data' => 'HtmlTag'), array('tag' => 'td')), array('Label', array('tag' => 'td')), array(array('row' => 'HtmlTag'), array('tag' => 'tr')) )); } } 

trying to create a table based form. But as soon as I add the element decorators

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

form disappears. My view only has <?php echo $this->form; ?> and if I remove the setElementDecorators, form displays correctly (without table layout of course).

And I followed this Tutorial - Table layout with Zend Framework form decorators

3
  • Are you asigning the $form variable somewhere in a controller script? Similar to this $this->view->form = $form; ? Commented Jan 11, 2012 at 15:09
  • 1
    well, of course :) otherwise it wouldn't have worked when I removed the setElementDecorator. Commented Jan 11, 2012 at 15:12
  • I' m sorry - it's been a long day ;) Commented Jan 11, 2012 at 18:35

1 Answer 1

1

My guess is that you don't show your warnings/exceptions and you're getting an exception from the Zend_Form_Element_File elements. You set the decorators for all the elements including those file elements. But file elements need the file decorator in order for them to work.

Set the decorators for the file elements after the setElementDecorators and see how that turns out. Or just leave out the file elements in order to test if that's what's causing your problem.

Sign up to request clarification or add additional context in comments.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.