Laravel7中如何让自定义规则PostFiles仅在文件前置校验通过后执行
解决方案
你只需要在files.*的验证规则数组最前面添加Laravel内置的bail规则即可,规则按数组顺序执行时,只要file、max:256000任意一项前置校验失败,就会直接中断该字段后续的验证流程,不会触发自定义PostFiles规则,无需在自定义规则中重复编写前置校验逻辑。
修改后的验证规则代码如下:
public function rules() { return [ 'files' => ['nullable', 'array'], 'files.*' => ['bail', 'file','max:256000', new PostFiles], 'body' => 'nullable|string', 'public' => 'boolean', ]; }
规则说明
bail规则的作用范围是当前单个字段的验证链路,仅对同数组内排在它之后的规则生效,不会影响其他字段的正常校验- 该特性在Laravel 7版本中完全兼容,不需要额外扩展或修改自定义规则的代码
内容的提问来源于stack exchange,提问作者Lazik
相关产品推荐
相关产品推荐

