Php Symfony表单:创建多个电子邮件字段
更新 我在Symfony文档中找到了我的案例的答案和示例教程:Php Symfony表单:创建多个电子邮件字段,php,symfony,doctrine-orm,Php,Symfony,Doctrine Orm,更新 我在Symfony文档中找到了我的案例的答案和示例教程: 如何在Symfony 3.1中为表单分配多个电子邮件字段? 在我的实体中,我有: /** * @var array * @ORM\Column(name="notification_emails", type="array", nullable=true) */ private $notificationEmails; /** * @return array */ public function getNotifica
如何在Symfony 3.1中为表单分配多个电子邮件字段? 在我的实体中,我有:
/**
* @var array
* @ORM\Column(name="notification_emails", type="array", nullable=true)
*/
private $notificationEmails;
/**
* @return array
*/
public function getNotificationEmails()
{
return $this->notificationEmails;
}
/**
* @param array $notificationEmails
*/
public function setNotificationEmails($notificationEmails)
{
$this->notificationEmails = $notificationEmails;
}
在我的表格中,我有:
$builder->add(
'notificationEmails',
CollectionType::class,
array(
'entry_type' => EmailType::class,
'label' => 'Add more emails separated by comma',
'attr' => array(
'multiple' => 'multiple',
),
)
);
但这不起作用:(只有在为每封电子邮件提供多个电子邮件字段的情况下,您才需要
收集
类型字段;借助javascript
的一些帮助,并使用添加新电子邮件
按钮
如果用户要添加以逗号分隔的电子邮件,则不需要集合
类型字段。请将其保留为带有帮助文本的简单文本类型字段
现在,在setter
[setNotificationEmails
]中,您应该将csv电子邮件字符串拆分为数组并馈送到ORM。ORM完成其余部分以便保存在数据库中
您应该在getter[getNotificationEmails
]中执行相反的操作(将数组转换为字符串)。因此,您的表单可以表示逗号分隔的电子邮件
如果上述情况不起作用,我怀疑,表单可能无法从getter读取数据。在这种情况下,您可以始终使用。它非常有用。请指定“但这不起作用”的含义。我在文档中发现了一个关于此情况的示例: