2013-06-23 50 views
0

我正在使用表格格式來渲染一個非常簡單的表單。我首先添加元素,之後設置其具有以下基本裝飾:Zend 1.12更改FormElement中特定裝飾器的值

$this->setElementDecorators(array(
     'Viewhelper', 
     array(array('data'=>'HtmlTag'),array('tag'=>'td')), 
     'Label', 
     array(array('labelCell'=>'HtmlTag'),array('tag'=>'td', 'align'=>'right')), 
     array(array('row'=>'HtmlTag'), array('tag'=>'tr')) 
    )); 

然後,我操縱任何組元素(如需要的話)來設置不同的外觀,例如:組元素中的單個行。要做到這最後一個,下面進行:

$this->getElement($elementName)->setDecorators(array(
     'Viewhelper', 
     array(array('data' => 'HtmlTag'), array('tag' => 'td', 'colspan' => $colspan)), 
     'Label', 
     array(array('labelCell' => 'HtmlTag'), array('tag' => 'td', 'align' => 'right')), 
     array(array('row' => 'HtmlTag'), array('tag' => 'tr')) 
    )); 

正如你看到的,我必須setDecorators()再次將所有這些(默認的),所以我可以改變'data'裝飾和添加屬性"colspan"

我的問題是:是否可以訪問和更改一個裝飾器而不需要必須設置元素所有的前面的裝飾器?

回答

0

,你應該能夠調用:

$viewHelperDecorator = $this->getElement($elementName)->getDecorator('ViewHelper'); 

然後,這就像任何其他的裝飾(它是一個裝飾抽象) - 讓您可以撥打

$viewHelperDecorator->setOption(); 

,並設置改變你我喜歡。