2013-06-23 19 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(); 

,并设置改变你我喜欢。