我创建了一个具有选择集合类型的表单。
$builder->add('roles', CollectionType::class, [
'entry_type' => ChoiceType::class,
'entry_options' => [
'choices' => ['Admin' => 'ROLE_ADMIN', 'User' => 'ROLE_USER'],
'label' => false,
],
])
角色字段在用户实体中定义如下:
/**
* @ORM\Column(type="json")
*/
private $roles = [];
然后在用户的实体类中添加以下方法:
public static function loadValidatorMetadata(ClassMetadata $metadata) {
$metadata->addPropertyConstraint('roles', new Assert\Choice(['ROLE_ADMIN', 'ROLE_USER']));
}
每次尝试提交表单时,都会收到验证错误:“您选择的值不是有效选择。”
在所有字段上方显示错误消息是什么奇怪的现象,这意味着该错误与任何可用字段都不相关。
具有角色的选择的名称是user[roles][0]
,它是自动创建的。
如果我关闭验证,则所有数据都会正确保存到数据库。
答案 0 :(得分:0)
Assert \ Choice希望字段“ role”的值是标量类型,但角色是集合。要使用Assert \ Choice验证收集,您需要执行此操作
public DateTime? DateOfBirth { get; set; }