1
votes

I'm trying to deal with some fieldsets witch are bind with the same table entity, and nested in some other one. Exemple:

Model:

Table Building
-> Name
-> Description
-> street name
-> street Number
-> consierge's phone
-> level count
-> height
-> Year of construction

All this fields are in one table but i whant to use multiples fieldset, like this for exemple:

descriptionBlgFieldset
->name
->description

AddressBlgFieldset
->street Name
->street Number
-> consierge's phone

FeaturesBlgFieldset
-> level count
-> height
-> Year of construction

Then i whant to blend those in some other field set, for exemple description with address, or description with features, or all of them. I was thinking this was peace of cake, but i dont know how to deal for the binding:

echo $form->get('building')->get('address')->get('streetNumber)

give me:

<input name="building[addresse][streetNumber]" />

But it's must be:

<input name="building[streetNumber]" />

I what thinking about the "set_as_base_fieldset" option, but it's only work when I'm hadding a fieldset in a form object, not in a fieldset.

How could i do that? (i hope this whas clear enought)

1

1 Answers

0
votes

If you want building[streetNumber] then you don't want to use a Fieldset. That's really all there is to it. A Zend\Form\Fieldset is an Element that encapsulates a set of properties that are standalone / their own object. For example:

Table Buildings
- id
- attr1
- addr_id

Table Addresses
- id
- name
- nr

In this case you'd have an AddressFieldset. But this isn't what you want. I assume you only divided this into fieldsets to have an impact on the default rendering. This is a mis-use of Zend\Form\Fieldset. You simply will have to render your form differently like

echo $this->form()->openTag($form);
echo "<fieldset>\n";
echo "    <legend>Address</legend>\n";
echo $this->formRow($form->get('streetName'));
echo $this->formRow($form->get('streetNuber'));
echo "</fieldset>\n";
echo "<fieldset>\n";
echo "    <legend>Features</legend>\n";
echo $this->formRow($form->get('levelCount'));
echo $this->formRow($form->get('height'));
echo "</fieldset>\n";
echo $this->form()->closeTag();