最近在使用Validate的时候,突然遇到一个问题,困扰好久了,一直没找到解决方案,甚至还去看了流年写的源码,还是没发现具体什么原因,直到今天无意中发现了问题所在
演示代码
控制器:
在控制器调用了验证器,传递的场景值是”get_list_by_page”,这样的话,只会校验该场景值对应的校验规则
验证器:
因为某些情况,临时不想校验”get_list_by_page”对应的规则,就简单把对应的三行代码注释了下
请求返回:
在请求该接口的时候,居然给我返回了 “get_detail”对应的校验规则(详情 id 不能为空),很是奇怪,我明明没有调用该场景呀。注释来注释去也没见有解决,就放弃了,今天无意间一行行删除注释,一次次调试,终于发现问题了。
解决方案:
当你使用了验证器某个场景的时候,需要在protected $scene = [];里填写对应的场景值,如上图所示,如果你不打算校验任何参数的话,可以只写一个[”],记得其中的”不能少或者干脆注释掉控制器当中的验证
示例代码:
“`
protected $scene = [ //分页获取列表 'get_list_by_page' => [''], //详情 'get_detail' => ['id'], ];
“`
官方文档地址:https://www.kancloud.cn/manual/thinkphp5_1/354104