我有一个ProjetContact
实体,其roles
关系。 ProjetContact实体必须至少具有一个角色。所以我添加了一个Count约束作为注释。
/**
* @var Collection
*
* @Assert\Count(min=1, minMessage="Vous devez sélectionner au moins un rôle par contact")
*
* @ORM\ManyToMany(targetEntity="ContactRole")
* @ORM\JoinTable(
* name="projet_contact_role",
* joinColumns={
* @ORM\JoinColumn(name="projet_contact_role_id", referencedColumnName="id")
* },
* inverseJoinColumns={
* @ORM\JoinColumn(name="role_id", referencedColumnName="id")
* }
* )
*/
private $roles;
但是,这不起作用,约束被忽略。用户可以在不选择任何角色的情况下提交表单。
我发现如果我在表单构建器上配置验证器,它就可以工作。
$builder
->add('roles', 'entity', array(
'label' => 'Rôles',
'class' => 'MyIntranetBundle:ContactRole',
[...]
'constraints' => new Count(
array('min'=>1, 'minMessage'=>'Vous devez sélectionner au moins un rôle par contact')
)
))
->[...]
我更希望直接在我的实体上配置验证器。为什么这不起作用?
答案 0 :(得分:1)
两个可能的原因:
Assert
(应为use Symfony\Component\Validator\Constraints as Assert;
)Default
组。答案 1 :(得分:0)
我必须在使用@Assert\Valid()
的父实体上添加ProjetContact
。
/**
* @var Collection
*
* @Assert\Valid()
*
* @ORM\OneToMany(targetEntity="ProjetContact", mappedBy="projet", cascade={"persist","remove"})
*/
private $contacts;