有条件的断言

Assertions with conditions

我想知道是否可以使用带条件的断言注释。

使用 symfony2,在我的实体 class 上,在一个 属性 我想放:

 * @Assert\NotBlank()

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

这可能吗?

正如我在评论中提到的,您可以利用 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,这可能更合适,因为它不会在您的模型代码(实体)中造成任何混乱。