0

テーブル形式の非常に単純なフォームをレンダリングしています。最初に要素を追加し、後で基本的なデコレータを次のように設定します。

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

私の質問は次のとおりです:要素が持っていた以前のデコレータをすべて設定することなく、単一のデコレータにアクセスして変更することは可能ですか?

4

1 に答える 1

0

あなたは呼び出すことができるはずです:

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

次に、これは他のデコレータと同じです(デコレータの抽象です)-したがって、呼び出すことができます

$viewHelperDecorator->setOption();

必要な変更を設定します。

于 2013-06-28T16:30:43.560 に答える