查询参数数组筛选器[id]=1的Laravel验证程序错误
我在验证请求参数以筛选查询字符串中接收的记录时遇到问题查询参数数组筛选器[id]=1的Laravel验证程序错误,laravel,validation,Laravel,Validation,我在验证请求参数以筛选查询字符串中接收的记录时遇到问题 $validator = Validator::make($request->request->all(), [ 'filter' => [ 'array', Rule::in(implode(',',$columns)) ], 'page
$validator = Validator::make($request->request->all(), [
'filter' =>
[
'array',
Rule::in(implode(',',$columns))
],
'page' =>'integer'
]);
其中coulmns包括id、name、size等,API请求的格式如下
./findAll?filter[id]=1&filter[name]=test
当传递任何不作为列存在的筛选器时,我希望返回400响应。您可以使用Validator extension创建自己的验证器: 在
AppServiceProvider
中输入以下代码:(或在任何提供程序中)
自定义验证器闭包接收四个参数:要验证的$attribute的名称、属性的$value、传递给规则的$parameters数组以及验证器实例
然后,在任何控制器中,您都可以使用以下两条规则:
$validator = Validator::make($request->request->all(), [
'filter' =>['array','keys_in:' . implode(',',$columns)],
'page' =>'integer'
]);
或者在列中使用我上面定义的快捷键
:
$validator = Validator::make($request->request->all(), [
'filter' =>['array','keys_in_columns:users'],
'page' =>'integer'
]);
不要忘记使用use-illumb\Support\Facades\Schema
和使用light\Support\Facades\Validator代码>在服务提供商中
希望这对你有帮助
$validator = Validator::make($request->request->all(), [
'filter' =>['array','keys_in_columns:users'],
'page' =>'integer'
]);