如何将一个装饰器设置为zend形式的多个元素

时间:2011-05-02 11:54:48

标签: zend-framework zend-form

在我的zend形式中,我将decarators设置为每个元素,而不是我可以设置适用于所有元素的单个decorater。

目前..

    $code = new Zend_Form_Element_Text("mealplancode");
    $code->setLabel("Code :");
    $code->setDecorators(
                         array(
                              array('ViewHelper',
                                        array('helper' => 'formText')
                            ),
                            array('HtmlTag',
                                        array('tag' => 'div', 'class' => '')
                            ),
                            array('Label',
                                        array('class' => 'label')
                            ),
                         )
                      );

    $name = new Zend_Form_Element_Text("mealplanname");
    $name->setLabel("Name :");
    $name->setDecorators(
                         array(
                              array('ViewHelper',
                                        array('helper' => 'formText')
                            ),
                            array('HtmlTag',
                                        array('tag' => 'div', 'class' => '')
                            ),
                            array('Label',
                                        array('class' => 'label')
                            ),
                         )
                      );

我想在单个setDecorator()中将装饰器设置为$ name和$ code 我能做到吗

1 个答案:

答案 0 :(得分:2)

在你的表单类中定义一个装饰器字段,以便能够将它应用于任何表单元素,例如:

public $elementDecorators = array(
        'ViewHelper',
            array(array('data'=>'HtmlTag'), array('tag' => 'td')),
            array('Label', array('tag' => 'td')),
            array(array('row'=>'HtmlTag'),array('tag'=>'tr'))); 

在你的代码中你可以设置装饰器:

$formElement->setDecorators($this->elementDecorators);