gpt4 book ai didi

forms - 如何处理Symfony2 Beta上的Form Collection?

转载 作者:行者123 更新时间:2023-12-04 06:26:42 25 4
gpt4 key购买 nike

我有一个实体用户和一个实体地址。 User 和 Address 之间存在一对多关系:

    class User
{
/**
* @orm:OneToMany(targetEntity="Address")
*/
protected $adresses;

[...]

}

我有一个类 AddressType 和类 UserType :
    class UserType extends AbstractType
{
public function buildForm(FormBuilder $builder, array $options)
{
$builder->add('addresses', 'collection', array('type' => new AddressType()));

}

[...]
}

在我的 Controller 中,我使用以下命令构建表单:
    $form = $this->get('form.factory')->create(new UserType()); 

...并使用以下方法创建 View :
    return array('form' => $form->createView());

我在我的 Twig 模板中显示表单字段:
    {{ form_errors(form.name) }}
{{ form_label(form.name) }}
{{ form_widget(form.name) }}
[...]

好的。现在,如何显示一个或多个地址的字段? (它不是 {{ for_widget(form.adresses.zipcode) }} 也不是 {{ for_widget(form.adresses[0].zipcode) }} ...)

有任何想法吗 ?

最佳答案

这就是我在表单模板中的做法:

{{ form_errors(form.addresses) }}

{% for address in form.addresses %}
<div id="{{ 'address%sDivId'|format(loop.index) }}" class="userAddressItem">
<h5> Address #{{ loop.index }}</h5>

{{ form_errors(address) }}
{{ form_widget(address) }}
</div>
{% endfor %}

我有一个由 jQuery 驱动的小操作栏,可让用户添加和删除地址。这是一个简单的脚本,它使用正确的 HTML 代码将一个新的 div 附加到容器中。对于 HTML,我只是使用了相同的输出,但具有 Symfony,但具有更新的索引。例如,这将是 AddressType 的街道输入文本的输出。形式:
<input id="user_addresses_0_street" name="user[addresses][0][street]" ...>
然后,Symfony 将接受的下一个索引是 1,因此您添加的新输入字段将如下所示:
<input id="user_addresses_1_street" name="user[addresses][1][street]" ...>
注意:三个点是 required="required" maxlength="255" 的替代品但可以根据您的需要进行更改。

你需要更多的 HTML 代码来添加一个全新的 AddressType到浏览器的 DOM 但这给了你一般的想法。

问候,
马特

关于forms - 如何处理Symfony2 Beta上的Form Collection?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5894570/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com