在创建元素时删除装饰器

时间:2014-02-02 05:41:05

标签: zend-framework

从我的表单中删除错误修饰符时遇到问题。这就是我创建元素的方法:

$this->setAttribute('method','post');
$this->add(
    array(
        'name'=>'username',
        'attributes'=>array(
            'type'=>'text',
            'id'=>'username',
        ),
        'options'=>array(
            'label'=>'Username'
        ),
    )
);

有没有办法可以从这里删除装饰器,或者可以从控制器中完成...我已经研究过它但是找不到一个好的答案..谢谢提前..

1 个答案:

答案 0 :(得分:1)

这基本上是不可能的。如果你真的想在创建元素时避免使用其中一个装饰器,你必须传递所有所需装饰器的列表,但是一个,例如:

// Zend_Form based class body
$this->addElement('text', 'myfield', array(
        'label' => 'My field',
        'decorators' => array(
                'ViewHelper',
                array('HtmlTag', array('tag' => 'div')),
        ),
);

然而,更简单的方法就是在创建元素之后,按名称删除单个装饰器。如果你在基于Zend_Form的类中,只需调用:

$this->getElement('myfield')->removeDecorator('Errors');

removeDecorator()方法是公共的,因此您可以在控制器中使用它:

$form = new My_Form();
$form->getElement('myfield')->removeDecorator('Errors');