如何解决Symfony Form CollectionType数组验证
我有一个实体,可以通过以下字段向多个用户发送电子邮件:
/**
* @ORM\Column(type="text")
*/
protected $message;
/**
* @ORM\Column(type="array")
*/
protected $variables;
该消息包含我保存在$variables
数组中的树枝变量。我正在使用CollectionType
渲染每个变量并设置其数据。可行。
我目前遇到的问题是,如果每个变量为空,我将无法对其进行验证。我之所以这样添加它们,是因为我首先需要保存该消息,然后再检查其中是否包含树枝变量:
$builder->addEventListener(FormEvents::POST_SET_DATA,function (FormEvent $event) {
/** @var Message $data */
$data = $event->getData();
$form = $event->getForm();
if (!empty($data->getVariables())) {
$form->add('variables',CollectionType::class,[
'label' => false,'entry_type' => TextType::class,'constraints' => [
new NotBlank()
]
]);
}
}
我发现了许多不同的解决方案,但它们都是针对使用不同实体的CollectionType的。就我而言,我只是保存数组,所以如果我的{{ first_name }}
中有$message
,我的a:1:{s:10:"first_name";s:0:"";}
中也将有$variables
。我需要确保first_name
在初始创建后不为空。
编辑:
在我设法阻止提交表单的实体中使用回调约束。现在的问题只是视觉上的。当前,错误消息出现在表格上方。我正在寻找一种方法来显示哪些字段完全为空,并且需要一个值。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。