내가 테이블을 기반으로 양식을 만들려고 간단한 젠드 양식젠드 양식
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'))
));
}
}
이 렌더링되지 않습니다. 그러나 요소 장식자를 추가하자마자
$this->setElementDecorators(array(
'ViewHelper',
'Errors',
array(array('data' => 'HtmlTag'), array('tag' => 'td')),
array('Label', array('tag' => 'td')),
array(array('row' => 'HtmlTag'), array('tag' => 'tr'))
));
양식이 사라집니다. 내보기에는 <?php echo $this->form; ?>
만 있고 setElementDecorators를 제거하면 폼이 물론 표 레이아웃을 표시하지 않고 올바르게 표시됩니다.
그리고이 Tutorial - Table layout with Zend Framework form decorators
컨트롤러 스크립트의 어딘가에서 $ form 변수를 할당하고 있습니까? 이 $ this-> view-> form = $ form과 비슷합니다. ? – mychiara
물론, 그렇지 않으면 setElementDecorator를 제거했을 때 작동하지 않았을 것입니다. – Optimus
미안 해요 - 긴 하루 였어요;) – mychiara