关于laravel使用自定义验证规则后某些规则不生效
版本信息
laravel:8.83.24
php:8.1.3
遇到的问题
在我使用自定义验证规则后,除了验证规则 required 正常生效以外,其他的都不正常生效
比如:numeric,integer,exists 等规则 ,毫不生效。
发此博文的需求
大佬们,有没有好的办法
自定义验证规则 And 自带的验证规则同时使用
使用自定义验证规则
1.在使用自定义规则之后
并没出现我上一张图中的message方法定义的错误信息,但是如图中的解释是因为我在模型使用了 firstOrFail 语句 并且 全局异常处理添加过该异常
不使用自定义验证规则
在不使用自定义规则的情况下
1.首先会验证当前ID是否是一个数字类型
2.其次会验证当前ID是否在数据库存在
本作品采用《CC 协议》,转载必须注明作者和本文链接
官方文档是这么写的 表单验证《Laravel 9 中文文档》
还是一样的结果 @sinmu
我尝试了一下,发现按照文档来,是没有错的。 我这边和你的区别在于我没有往
自定义验证规则
里面传递参数。你的是这样的
我的相关文件内容如下
routes/api.php
App\Http\Controllers\TestController.php
App\Rules\TestRule.php
我请求API得到的结果如下图,四个规则都生效了
我这里有个疑惑,你将user值传递到rule里面的目的是啥?
我一般传递过来的数据直接在 表单验证里面去验证的。我感觉 Laravel 的可用的验证规则 是足够的
@sinmu 大佬 确实按你说的那种不传参数跑了一遍,跟你的一样的,也是没有错误,我给自定义规则传参数的意义就是给在内部 我会检查这个作品是不是本次请求的用户的作品 ,在这里 我也想到了可以 用 auth
@sinmu 大佬 我测试了一下,只要在rule中存在数据库操作就会暂停除了required以外的一切验证信息