Laravel验证器在为空时传递数组

时间:2018-08-06 17:41:30

标签: laravel

我已经为我的请求提供了基本的laravel验证器:

    $validator = Validator::make($request->all(), [
        'speciality' => 'required|array|min:1',
    ]);
    if ($validator->fails()) {
        return response([
            'status' => 'error',
            'error' => 'invalid.credentials',
            'message' => 'error validation'
        ], 400);
    }

特殊性应该是一个数组,因此我将其定义为required|array|min:1

问题是当我的请求包含一个内部为null的空数组:speciality: [ null ]时,它以某种方式通过了我的验证器。

我如何更正它以适应这种情况?

1 个答案:

答案 0 :(得分:4)

使用点访问基础元素/值:

$validator = Validator::make($request->all(), [
    'speciality' => 'required|array|min:1',
    'speciality.*' => 'required' //ensures its not null
]);

请参阅文档的Validation: Validating Arrays部分。


请注意,[null]不在empty数组中,这就是通过初始验证的原因。您可以验证此操作:

dd(empty([null]));

这将输出:

  

false