【问题标题】:Laravel 5 validator passing when it should failLaravel 5 验证器在它应该失败时通过
【发布时间】:2019-08-07 06:41:21
【问题描述】:

我在 Laravel 5.7 中验证一个数组,但是当我预计它失败时验证器通过了。

    $validator = Validator::make($request->all(), [

        'user_reg_email' => 'required|max:255|email|exists:users,email',
        'service_start_date' => 'required|before_or_equal:today',
        'service_end_date' => 'nullable|after:service_start_date',
        'role' => 'array|min:1|unique:provider_user,role,NULL,id,user_email,' . $request->user_reg_email . ',provider_domain,' . $request->prov,

    ]);

payload如下:

    {

        _token: "d5VYhirRAn3Zb9bCKHKQiuLNXkHfEP4hEs0bAZvj",
        prov: "email.com",
        user_reg_email: "john@email.com",
        service_start_date: "2019-03-03",
        service_end_date: null,
        role: [
            null
        ],
    }

角色验证通过,但我预计它会失败。如何获得预期的结果?

【问题讨论】:

  • 你验证它到底是为了什么?
  • 表主键由'provider_domain'、'user_email'和'role'组成,需要唯一。此验证工作正常。当它应该失败时通过的部分是'array | min:1'。当您传递一个 NULL 数组时,这应该会失败。
  • 我认为使用所需的验证应该可以解决问题。否则尝试使用验证器进行自定义验证

标签: arrays laravel validation


【解决方案1】:

'role' => 'array,...' 将验证 role 字段是一个数组,它确实是。

要验证数组中的项目,您还需要包含以下规则:

'role.*' => unique:provider_user,...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-10
    • 1970-01-01
    • 2018-07-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多