验证laravel错误

时间:2017-06-01 12:26:38

标签: php laravel lumen

我想在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()的{​​{1}}。我该怎么做才能解决这个错误?

1 个答案:

答案 0 :(得分:2)

像这样使用验证器。

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);