php Zend Framework-仅当装饰器没有';还没有改变

php Zend Framework-仅当装饰器没有';还没有改变,php,zend-framework,zend-form,zend-decorators,Php,Zend Framework,Zend Form,Zend Decorators,实际上,我正在寻找一种很好的方法,为我的所有表单元素提供通用的装饰器,但同时能够非常具体地更改某些元素的某些装饰器 假设我希望我的所有元素都有新的通用装饰器。我会在父泛型表单类的addElement方法中这样做。例如,在My_Form类扩展Zend_Form中,包含实际元素声明的My_Form\u用户将对其进行扩展,我将有如下内容: public function addElement($element, $name = null, $options = null) { parent::

实际上,我正在寻找一种很好的方法,为我的所有表单元素提供通用的装饰器,但同时能够非常具体地更改某些元素的某些装饰器

假设我希望我的所有元素都有新的通用装饰器。我会在父泛型表单类的
addElement
方法中这样做。例如,在
My_Form
类扩展
Zend_Form
中,包含实际元素声明的
My_Form\u用户将对其进行扩展,我将有如下内容:

public function addElement($element, $name = null, $options = null)
{
    parent::addElement($element, $name, $options);

    if (! is_object($element)) {
        $element = $this -> getElement($name);
    }

    if (is_object($element))
    {
        $element -> clearDecorators();
        $element -> addDecorators($this -> elementDecorators);
    }

    return $this;
}
现在,我对某些形式的某些元素有非常具体的需求。因此,我在创建元素(在
myform\u User
类中)时设置了这些装饰器,但当然,当我使用
addElement
将它们添加到表单中时,我找不到方法来检查是否有一个装饰器(
ViewHelper
Description
Label
)已经修改过,所以我不会用普通的擦除它


有什么想法吗?谢谢

有点短,但是

  • getDecorator($name)
  • getDecorators()
  • 移除的除颤器($name)

…也许这已经有帮助了。

事实上,如果我使用getDecorator($name),我将始终拥有一些东西,因为Zend默认的decorators是加载的,对吗?如果你想保留或删除decorator,你应该知道哪些是,对吗?那么,这些元素是否为默认值会有区别吗?如果我回到我的示例,在我的表单类(不是我的表单用户)中,我不知道哪些元素有特定的装饰器;这正是我问题的重点,我想知道:)
getDecorators()
应该让您了解每个元素的decorators。那你就知道了。这不管用吗?是的,它会给我所有的decorator,但是在
我的表单中
我想设置泛型decorator,我只想在decorator没有从Zend默认值更改的情况下这样做。也许我在这里遗漏了什么,但是没有
getDefaultDecorators()
getDefaultDecorator($name)
来检查它是否与实际的
getDecorator($name)
不同。