您好我必须在zend中使用相同的选项创建一些multiselect元素。即
$B1 = new Zend_Form_Element_Multiselect('Rating');
$B1->setLabel('B1Rating')
->setMultiOptions(
array(
'NULL' => "Select",
'1' => '1', '2' => '2', '3' => '3', '4' => '4', '5' => '5'))
->setRequired(TRUE)
->addValidator('NotEmpty', true);
$B1->setValue(array('NULL'));
$B1->size = 5;
$this->addElement($B1);
现在我必须创建5个相同类型但不同标签的元素。所以我不想复制整个代码5次。那么有没有办法可以这样做,而无需复制粘贴代码5次。
答案 0 :(得分:2)
关于三种不同的方式让人想起。这是最简单的一个
$B2 = clone $B1;
$B2->setLabel('B2Rating');
答案 1 :(得分:2)
另一种方法:
$options = array(
'required' => true,
'validators' => array('NotEmpty'),
'value' => null,
'size' => 5,
'multiOptions' => array(
'NULL' => "Select",
'1' => '1', '2' => '2', '3' => '3', '4' => '4', '5' => '5'),
);
$B1 = new Zend_Form_Element_Multiselect('Rating', $options);
$B1->setLabel('B1Rating')
$this->addElement($B1);
$B2 = new Zend_Form_Element_Multiselect('Rating2', $options);
$B2->setLabel('B2Rating')
$this->addElement($B1);
等等......
答案 2 :(得分:2)
因为对于实现某个目标的方式数量没有限制,这是另一种解决方案:
$ratingLabels = array('Rating 1', 'Rating 2', 'Rating 3');
foreach($ratingLabels as $index => $ratingLabel) {
$this->addElement('multiselect', 'rating' . (++$index), array(
'required' => true,
'label' => $ratingLabel,
'value' => 'NULL',
'size' => 5,
'multiOptions' => array(
'NULL' => 'Select',
'1' => '1', '2' => '2', '3' => '3', '4' => '4', '5' => '5'
),
));
}