2011-09-16 35 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

相關問題