简体   繁体   中英

Zend Form won't render

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; ?> <?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

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.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM