在zend框架中使用相同的选项集创建多个元素。

时间:2012-03-19 19:31:23

标签: zend-framework zend-form-element

您好我必须在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次。

3 个答案:

答案 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'
        ),
    ));
}