如果我有许多针对我的实体的验证器,我能否以某种方式指定一个验证器,如果它失败则停止其余验证器?IE:如果 NotBlank 失败,则没有必要检查权限。
或者,如果它不是内置的,也许有一种方法可以指示图遍历器停止,我可以放入一个验证器来检查先前的故障并停止通过图的传播。
如果我有许多针对我的实体的验证器,我能否以某种方式指定一个验证器,如果它失败则停止其余验证器?IE:如果 NotBlank 失败,则没有必要检查权限。
或者,如果它不是内置的,也许有一种方法可以指示图遍历器停止,我可以放入一个验证器来检查先前的故障并停止通过图的传播。
尽管这已经很老了,但从 5.1 开始,有一种方法可以通过使用Sequentially
约束来做到这一点。
此约束允许您应用一组应逐步验证的规则,允许在引发第一次违规时中断验证。
您只需传递一组约束来验证:
/**
* @Assert\Sequentially({ @Assert\NotBlank(), @Permissions() })
*/
如果您在其中设置验证,./app/config/validation.yml
则 SF2 将按照文件中的验证顺序进行验证。一旦验证失败,它将忽略其他验证。