有条件的断言

时间:2016-06-21 13:21:12

标签: validation symfony doctrine-orm annotations assertions

我想知道是否可以在条件下使用asser注释。

在我的实体类中使用symfony2,我希望在一个属性上添加:

 * @Assert\NotBlank()

如果另一个属性的值为7。

这可能吗?

1 个答案:

答案 0 :(得分:1)

正如我在评论中提到的,您可以使用Callback Constraint

看起来像这样:

class YourEntity
{
    /**
     * @Assert\Callback
     */
    public function validate(ExecutionContextInterface $context, $payload)
    {
        if(($this->firstAttr == 7) && empty($this->secondAttr)) {
            $context->buildViolation('Second can\'t be empty when first is 7!')
                ->atPath('secondAttr')
                ->addViolation();
        }
    }
}

你也可以制作一个更合适的external callback validator,因为它不会对你的模型代码(实体)造成任何混乱。