Zend为所有表单元素创建装饰器

时间:2013-07-24 16:02:17

标签: php zend-framework

对于一个元素装饰我使用

$this->getElement('usr_name')->addDecorator('Label', array('class' => 'control-label'));

也许更快的解决方案来装饰ALL表单labels

2 个答案:

答案 0 :(得分:1)

您可以实现一个函数来将装饰器添加到表单的所有元素

如果$form是表单对象。实现一个循环遍历$form对象的输入元素并在每个元素上添加装饰器的函数

function addLabelDecorator($form)
{
    $formElements = $form->getElements();
    foreach($formElements as $element)
        $element->addDecorator('Label', array('class' => 'control-label'));

    return $form;   
}

答案 1 :(得分:0)

将元素添加到表单后,使用setElementDecorators为它们指定装饰器。

Exampe:

class Form_Example extends Zend_Form
{

    public function init()
    {
        /* creating form elements*/



        // specify all element decorators    
        $this->setElementDecorators(array(
            'ViewHelper',
            array('Label', array('class' => 'control-label')),
        ));

        // specify all form decorators
        $this->setDecorators(array(
            'FormElements',
            'Form'
        ));
    }
}

但是,如果您尝试集成Zend_Form和Twitter Bootstrap,则已经实施了以下解决方案:EasyBib_Form_Decorator