是否有一种简单的方法来构造验证约束的替代方案,如下所示?
/** * @Assert\Or( * @Assert\MinLength(4), * @Assert\Regex("XYZ") * ) */ $column;
ltqd579y1#
虽然这并没有直接回答这个问题(因为这个解决方案在Symfony 4中并不存在),但这可能对多年后从Google来到这里的其他人有用。从Symfony 5.1开始,就有一个AtLeastOneOf约束,它就是这样做的--如果至少有一个子约束被满足,那么验证就通过了。以下约束条件可确保:
# config/validator/validation.yaml App\Entity\Student: properties: password: - AtLeastOneOf: - Regex: '/#/' - Length: min: 10 grades: - AtLeastOneOf: - Count: min: 3 - All: - GreaterThanOrEqual: 5
gwbalxhn2#
您可以使用CallbackValidator在类上实现一个方法来执行验证。或者自己实现一个自定义验证器(如果您需要在其他类上使用相同的验证构造,那么这很有用)https://symfony.com/doc/current/validation/custom_constraint.html
CallbackValidator
2条答案
按热度按时间ltqd579y1#
虽然这并没有直接回答这个问题(因为这个解决方案在Symfony 4中并不存在),但这可能对多年后从Google来到这里的其他人有用。
从Symfony 5.1开始,就有一个AtLeastOneOf约束,它就是这样做的--如果至少有一个子约束被满足,那么验证就通过了。
以下约束条件可确保:
gwbalxhn2#
您可以使用
CallbackValidator
在类上实现一个方法来执行验证。或者自己实现一个自定义验证器(如果您需要在其他类上使用相同的验证构造,那么这很有用)
https://symfony.com/doc/current/validation/custom_constraint.html