Zend 1.12更改FormElement中特定装饰器的值

时间:2013-06-23 02:24:34

标签: zend-framework zend-form zend-decorators

我正在使用表格格式呈现一个非常简单的表单。我首先添加元素,以便稍后使用以下内容设置其基本装饰器:

$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"

我的问题是:是否可以访问和更改单个装饰器,而必须设置该元素的所有先前装饰器?

1 个答案:

答案 0 :(得分:0)

你应该可以致电:

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

然后,这就像任何其他装饰器(它是装饰器摘要) - 所以你可以调用

$viewHelperDecorator->setOption();

并设置您想要的更改。