查询参数数组筛选器[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'
]);