【问题标题】:Validate laravel error验证 laravel 错误
【发布时间】:2017-06-01 12:26:37
【问题描述】:

我正在尝试在 Lumen 中使用 $this->validate 助手。但是,根据请求,我需要做 $request->json()->all() 而不是 $request->all() 只是因为当我使用后者。

$request->json()->all() 输出:

array:6 [
  "username" => ""
  "first_name" => "asaas"
  "last_name" => ""
  "email_address" => ""
  "password" => ""
  "password_confirmation" => ""
]

$request->all() 输出:

array:1 [
  "{"username":"","first_name":"asaas","last_name":"","email_address":"","password":"","password_confirmation":""}" => ""
]

现在,当我在助手上传递 $request->json()->all() 时:

$this->validate($request->json()->all(), [
    'username' => 'required|min:2|max:20',
    'first_name' => 'required|max:50',
    'last_name' => 'required|max:50',
    'email_address' => 'required|email',
    'password' => 'required',
]);

会报错:

类型错误:参数 1 传递给 Laravel\Lumen\Routing\Controller::validate() 必须是 Illuminate\Http\Request,给定数组,在里面调用

正如我所料,因为$request 应该传递而不是json()->all()。我该怎么做才能解决这个错误?

【问题讨论】:

  • 为什么一定要用$request->json()->all()?您不能将数组传递给验证,它必须是请求对象。

标签: php laravel lumen


【解决方案1】:

像这样使用验证器。

use Illuminate\Support\Facades\Validator;

$validator = Validator::make($request->json()->all(), [
    'username' => 'required|min:2|max:20',
    'first_name' => 'required|max:50',
    'last_name' => 'required|max:50',
    'email_address' => 'required|email',
    'password' => 'required',
]);

然后处理验证检查

if ($validator->fails()) {
    return response()->json($validator->errors(), 422);
}

或者

$this->validateWith($validator);

【讨论】:

    猜你喜欢
    • 2018-09-05
    • 2013-10-31
    • 2016-03-28
    • 2019-12-07
    • 2018-12-05
    • 2017-07-16
    • 2016-05-10
    相关资源
    最近更新 更多