我试图处理一些与同一个表实体绑定的字段集,并嵌套在另一个表实体中。 例如:
型号:
Table Building
-> Name
-> Description
-> street name
-> street Number
-> consierge's phone
-> level count
-> height
-> Year of construction
所有这些字段都在一个表中,但我想使用倍数字段集,例如这样:
descriptionBlgFieldset
->name
->description
AddressBlgFieldset
->street Name
->street Number
-> consierge's phone
FeaturesBlgFieldset
-> level count
-> height
-> Year of construction
然后我想把它们放在其他一些字段集中,例如地址的描述,或者有特征的描述,或者所有这些。我以为这是和平的蛋糕,但我不知道如何处理绑定:
echo $form->get('building')->get('address')->get('streetNumber)
告诉我:
<input name="building[addresse][streetNumber]" />
但它必须是:
<input name="building[streetNumber]" />
我在考虑&#34; set_as_base_fieldset&#34;选项,但它仅在我在表单对象中而不是在字段集中包含字段集时才起作用。
我怎么能这样做? (我希望这很明显)
答案 0 :(得分:0)
如果你想要building[streetNumber]
,那么你不想使用Fieldset。这就是它的全部内容。 Zend\Form\Fieldset
是一个元素,它封装了一组独立/属于自己的对象的属性。例如:
Table Buildings
- id
- attr1
- addr_id
Table Addresses
- id
- name
- nr
在这种情况下,你有一个AddressFieldset
。但这不是你想要的。 我假设您只将其划分为字段集,以对默认呈现产生影响。这是对Zend\Form\Fieldset
的误用。您只需要像
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();