ZF2:嵌套字段集;结合和水合作用

时间:2014-04-16 07:37:51

标签: php doctrine-orm zend-framework2

我试图处理一些与同一个表实体绑定的字段集,并嵌套在另一个表实体中。 例如:

型号:

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;选项,但它仅在我在表单对象中而不是在字段集中包含字段集时才起作用。

我怎么能这样做? (我希望这很明显)

1 个答案:

答案 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();