2011-09-16 34 views
0

实际上,我正在寻找一种很好的方法来为所有表单元素添加通用装饰器,但同时还可以更改某些装饰器的某些元素非常具体。php Zend Framework - 只有在尚未更改的情况下才更改装饰器

说我想我的所有元素都有新的通用装饰器。我会在我的父类泛型表格类的addElement方法中这样做。例如,在延长Zend_Form至极My_Form类将由My_Form_User包含实际元素的声明进行扩展,我会碰到这样的:

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; 
} 

现在,我已经对某些形式的一些元素非常具体的需求。所以当我创建元素(在My_Form_User类中)时,我设置了这些装饰器,但是,当然,当我将它们添加到与addElement的表单中时,我无法找到一种方法来检查1个装饰器(ViewHelperDescriptionLabel。 ..)已被修改,以便我不会将其与通用的一个擦除。

有什么想法?谢谢 !

回答

0

这是一个有点短,但...

  • getDecorator($名)
  • getDecorators()
  • removeDecorator($名)

...也许这会有所帮助已经。

+0

其实如果我做一个getDecorator($ name),我总会有东西作为Zend默认装饰器加载正确吗? – jhuet

+0

那么如果你想保留或删除装饰器,你应该知道哪些,对吧?那么,如果这些是默认或不是,它会有所作为? – hakre

+0

如果我收回我的例子,在My_Form类(不是My_Form_User)中,我不知道哪些元素具有特定的装饰器;这正是我的问题的重点,我想知道的方法:) – jhuet

相关问题