【问题标题】:Symfony2 : Recursive ValidationSymfony2:递归验证
【发布时间】:2013-08-23 12:51:09
【问题描述】:

我有一个带有一些验证器的实体(不是表单)。

所以我使用$validator->validate($entity),但它不验证我的子对象(实体类有一些其他实体类和一些验证器)。

有没有一种“自动”的方式来做到这一点,或者我必须为每个人都做$errorList->addAll($validator->validate($entity));

【问题讨论】:

  • 可以在属性上使用注解@Assert\Valid
  • 就是这样,谢谢!!我认为@Assert\Type(...) 就足够了..

标签: symfony recursion validation


【解决方案1】:

要允许对对象进行递归验证,您只需使用约束@Assert\Valid

示例
假设一个人有一个强制性的姓氏

class Person
{
    /**
     * @Assert\NotNull
     * @var string
     */
    protected $lastName;
}

你有一个产品,它有一个买家 (Person)

class Product
{
    /**
     * @Assert\NotNull
     * @Assert\Valid
     * @var Person
     */
    protected $buyer;
}

通过拥有NotNullValid,每次验证Product 模型时,它都会检查:

  • 有买家
  • 买家有lastName

【讨论】:

  • 我会添加 @Assert\Type(...\Person) 以确保它是一个 Person 对象。 :)
  • @Bonswoar 实际上,您不必这样做。由于属性被锁定,你应该有一个setBuyer(Person $person) 方法。如果给定类型错误,PHP 将触发错误
猜你喜欢
  • 2015-01-08
  • 1970-01-01
  • 1970-01-01
  • 2015-11-05
  • 2016-06-01
  • 2014-04-28
  • 2018-06-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多