将验证组分配给"所有"验证约束 - Symfony 2.5

时间:2014-09-26 18:51:49

标签: validation symfony

我的实体中有电话字段:

/**
 * @ORM\Column(type="array")
 * @Assert\All({
 *     @Assert\NotBlank(),
 *     @Assert\Length(
 *          min = 5,
 *          minMessage = "Your phone number must be at least {{ limit }} characters long"
 * )
 * })
 */
protected $phone;

这些验证的作用是"默认"验证组没有任何问题,但是当我添加这样的验证组时:

/**
 * @ORM\Column(type="array")
 * @Assert\All({
 *     @Assert\NotBlank(groups={"profile"}]),
 *     @Assert\Length(
 *          min = 5,
 *          minMessage = "Your phone number must be at least {{ limit }} characters long",
 *          groups={"profile"}
 * )
 * })
 */
protected $phone;

它不起作用!也许在语法或其他方面有错误...... 我错过了什么?

3 个答案:

答案 0 :(得分:2)

查看官方文档,我可以看到关于此文档的信息很少。

你有没有试过这样的事情:

/**
 * @ORM\Column(type="array")
 * @Assert\All({
 *     @Assert\NotBlank(),
 *     @Assert\Length(min = 5, minMessage = "Your phone number must be at least {{ limit }} characters long")
  * }, groups={"profile"})
  */
 protected $phone;

答案 1 :(得分:1)

这种方式对我来说在Symfony 2.3(2.3.25)上运行良好:

/**
 * @ORM\Column(type="array")
 * @Assert\All(
 *     constraints={
 *         @Assert\NotBlank(),
 *         @Assert\Length(min = 5, minMessage = "Your phone number must be at least {{ limit }} characters long")
 *     }, 
 *     groups={"profile"}
 * )
 */
 protected $phone;

答案 2 :(得分:-1)

你快到了。您必须为要传递给Validator的数组提供一个键,否则您将无法拥有包含多个项目的数组。您只需添加关键约束,然后您就可以添加您的群组了。将组添加到所有验证器非常重要。

/**
 * @ORM\Column(type="array")
 * @Assert\All(constraints = {
 *     @Assert\NotBlank(groups={"profile"}]),
 *     @Assert\Length(
 *          min = 5,
 *          minMessage = "Your phone number must be at least {{ limit }} characters long",
 *          groups={"profile"}
 *     )
 * }, groups={"profile"})
 */
protected $phone;