Symfony Entity Annotation Assert中的两个必须不为null

时间:2017-03-23 10:41:28

标签: symfony annotations entity assert

有人知道如何通过断言在实体中执行此操作吗?

如果电子邮件和号码是空的那么返回错误=> '两个字段中的一个必须不是空的' 因此,其他断言有效

代码:

 /**
 * @ORM\Column(name="email", nullable=true, type="string")
 * @Assert\Email(
 *     message = "The email '{{ value }}' is not a valid email.",
 *     checkMX = true
 * )
 */
private $email;

/**
 * @ORM\Column(name="phone", nullable=true, type="string")
 * @Assert\Regex(
 *      "/48[0-9]{9}/", message="Wrong number format"
 * )
 */
private $phone;

3 个答案:

答案 0 :(得分:1)

这是使用验证字段条件的方法的例子:

/**
 * @var boolean
 *
 * @Solr\Field(type="boolean")
 * @ORM\Column(name="professionel", type="boolean")
 */
private $professionel;

/**
 * @Assert\IsTrue(message = "Type d'actualité invalide")
 */
public function isValidprofessionel()
{
    if (!$this->professionel && !$this->particulier) {
        return 0;
    } else {
        return 1;
    }
}

我希望有所帮助!

答案 1 :(得分:1)

/**
 * @Assert\Expression(
 *     "!this.getEmail() && !this.getPhone()",
 *     message="Please, enter email or phone."
 * )
 */
class Entity
{
    // ...
}

http://symfony.com/doc/current/reference/constraints/Expression.html

答案 2 :(得分:0)

您还可以为整个班级创建自定义验证器。这是一个symfony教程。 http://symfony.com/doc/current/validation/custom_constraint.html