8

フォームに 4 つのサブフォームがあり、そのうちの 2 つをグループ化し、それらにいくつかのデコレータを適用したいと考えています。

これが私がこれまでに持っているものです。各サブフォームで、すでにいくつかの表示グループが存在しています

$this->setSubForms(array(
    'sub1'  => $sub1,
    'sub2'  => $sub2,
    'sub3'  => $sub3,
    'sub4'  => $sub4
));

私は次のようなことができると思った

$set1 = $this->setSubFormDecorators(array(
    'sub1'  => $sub1,
    'sub2'  => $sub2
    ));
    $set1->setDecorator(array('something here'));

$set2 = $this->setSubFormDecorators(array(
    'sub3'  => $sub3,
    'sub4'  => $sub4
    ));
    $set2->setDecorator(array('something here'));

明らかにこれはまったく機能しません。

ZFのドキュメントには何も見つかりませんでした。他の誰かがこの難問に出くわした場合は、ここに投稿すると思いました。

4

2 に答える 2

5

だから基本的に私はそれを理解しました。

まず、「空の」サブフォームを作成します

$left = new Zend_Form_SubForm();     

次に、この「サブフォーム」内に必要なサブフォームを追加します

$left->setSubForms(array(
   'sub1'  => $sub1,
   'sub2'  => $sub2
));

デコレーターを追加したい他のサブフォームに対しても同じことを行います。

$right = new Zend_Form_SubForm();     

$right->setSubForms(array(
   'sub3'  => $sub3,
   'sub4'  => $sub4
));

次に、元のフォームに、これらの新しい「$left」および「$right」サブフォームを追加します

$this->setSubForms(array(
   'left'  => $left,
   'right' => $right
));

その後、必要に応じて "$left" および "$right" サブフォームにデコレータを適用できます。

私の内部の要素をカプセル化するフィールドセットを削除したいので、このように見えるので、他のものにも同じことをします。

    $left->setDecorators(array(
        'FormElements',
        array('HtmlTag', array('tag' => 'div')),
        ));

ありがとう

于 2011-02-24T00:56:50.343 に答える
0

addDisplayGroupこの場合も大丈夫でしょうか?

于 2011-02-23T23:21:32.573 に答える