テーブル形式の非常に単純なフォームをレンダリングしています。最初に要素を追加し、後で基本的なデコレータを次のように設定します。
$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'))
));
その後、要素のグループを (必要に応じて) 操作して、さまざまな外観を設定します。たとえば、要素を 1 行にグループ化します。この最後のものを行うために、次のことが実行されます。
$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"
。
私の質問は次のとおりです:要素が持っていた以前のデコレータをすべて設定することなく、単一のデコレータにアクセスして変更することは可能ですか?