how do you group subforms
Asked Answered
H

2

8

i have 4 subforms in a form i would like to group 2 of them together, and then apply some decorators to them.

here is what i have so far. w/in each subform i already have some display groups present

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

i thought i could do something like

$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'));

obviously this doesn't work at all.

I really couldn't find anything in ZF's documentation. I thought i post it here if anyone else has run across this quandary.

Henghold answered 23/2, 2011 at 20:39 Comment(0)
H
5

so basically i've figured it out.

first off you create "empty" subforms

$left = new Zend_Form_SubForm();     

then you add the subforms you want inside of this "subform"

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

you do the same thing for the other subform you want to add decorators to.

$right = new Zend_Form_SubForm();     

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

then to your original form you add these new "$left" and "$right" subforms

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

you can then apply decorators to the "$left" and "$right" subforms as you see fit.

since i want to drop the fieldsets that encapsulate the elements inside mine looks like this, you do the same to the other one.

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

Thanks

Henghold answered 24/2, 2011 at 0:56 Comment(0)
C
0

Maybe addDisplayGroup will be fine in this case too?

Cruiser answered 23/2, 2011 at 23:21 Comment(1)
no addDisplayGroup requires elements. I've figured it out. thanks thoughHenghold

© 2022 - 2024 — McMap. All rights reserved.