Symfony 4确认约束替代

w41d8nur  于 2023-03-09  发布在  其他
关注(0)|答案(2)|浏览(98)

是否有一种简单的方法来构造验证约束的替代方案,如下所示?

/**
 * @Assert\Or(
 *    @Assert\MinLength(4),
 *    @Assert\Regex("XYZ")
 * )
 */
 $column;
ltqd579y

ltqd579y1#

虽然这并没有直接回答这个问题(因为这个解决方案在Symfony 4中并不存在),但这可能对多年后从Google来到这里的其他人有用。
从Symfony 5.1开始,就有一个AtLeastOneOf约束,它就是这样做的--如果至少有一个子约束被满足,那么验证就通过了。
以下约束条件可确保:

  • 学生的密码包含#或长度至少为10个字符;
  • 学生的成绩是包含至少3个元素或者每个元素大于或等于5的数组。
# config/validator/validation.yaml
App\Entity\Student:
    properties:
        password:
            - AtLeastOneOf:
                - Regex: '/#/'
                - Length:
                    min: 10
        grades:
            - AtLeastOneOf:
                - Count:
                    min: 3
                - All:
                    - GreaterThanOrEqual: 5
gwbalxhn

gwbalxhn2#

您可以使用CallbackValidator在类上实现一个方法来执行验证。
或者自己实现一个自定义验证器(如果您需要在其他类上使用相同的验证构造,那么这很有用)
https://symfony.com/doc/current/validation/custom_constraint.html

相关问题