【问题标题】:Assertions with conditions有条件的断言
【发布时间】:2016-06-21 13:21:12
【问题描述】:

我想知道是否可以使用带有条件的asser注解。

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

 * @Assert\NotBlank()

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

这可能吗?

【问题讨论】:

    标签: validation symfony doctrine-orm annotations assertions


    【解决方案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,这可能更合适,因为它不会在您的模型代码(实体)中造成任何混乱。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-22
      • 2021-08-14
      • 2015-05-22
      相关资源
      最近更新 更多