我需要通过输入字段收集数据数组。例如:
<input name="customer_name" type="text">
<input name="customer_emails[]" type="text">
<input name="customer_emails[]" type="text">
<input name="customer_emails[]" type="text">
如何在Symfony2表单构建器中呈现此类表单?
文档说:
$builder->add('emails', 'collection', array(
// each item in the array will be an "email" field
'type' => 'email',
// these options are passed to each "email" type
'options' => array(
'required' => false,
'attr' => array('class' => 'email-box')
),
));
我不清楚我应该在哪里提供我想要的电子邮件字段数。
答案 0 :(得分:3)
收集字段的确切数量由绑定到表单的模型决定。仔细看看Symfony collection
field type documentation中的最后一段:
在这两种情况下,除非您的电子邮件数据,否则不会呈现任何输入字段 数组已包含一些电子邮件。
在这个简单的例子中,仍然无法添加新地址或 删除现有地址。使用可以添加新地址 allow_add选项(以及可选的原型选项)(参见 例子如下)。可以通过以下方式删除电子邮件阵列中的电子邮件 allow_delete选项。
因此,如果您需要接受三个电子邮件地址,请确保绑定到表单的数据设置了相应的值,或者考虑'allow_add'
的{{1}}选项类型。
答案 1 :(得分:2)
@kix所说的绝对正确。
但是,如果您想提供初始数量的字段,您可以:
$object = ... # Some object...
$object->setEmail(array("", "", "")); # for example, 3 addresses
$form = $this->createForm(new SomeFormType(), $object);
####
# REST OF YOUR LOGIC
####
$view = $form->createView();