Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 验证拉威尔误差_Php_Laravel_Lumen - Fatal编程技术网

Php 验证拉威尔误差

Php 验证拉威尔误差,php,laravel,lumen,Php,Laravel,Lumen,我正在尝试在Lumen中使用$this->validate助手。但是,对于请求,我需要执行$request->json()->all(),而不是$request->all(),这只是因为在使用后者时,我无法获得确切的参数及其值(即使字段有值,它仍会将其标记为失败) $request->json()->all()输出: array:6 [ "username" => "" "first_name" => "asaas" "last_name" => "" "ema

我正在尝试在Lumen中使用
$this->validate
助手。但是,对于请求,我需要执行
$request->json()->all()
,而不是
$request->all()
,这只是因为在使用后者时,我无法获得确切的参数及其值(即使字段有值,它仍会将其标记为失败)

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

array:6 [
  "username" => ""
  "first_name" => "asaas"
  "last_name" => ""
  "email_address" => ""
  "password" => ""
  "password_confirmation" => ""
]
array:1 [
  "{"username":"","first_name":"asaas","last_name":"","email_address":"","password":"","password_confirmation":""}" => ""
]
$request->all()输出:

array:6 [
  "username" => ""
  "first_name" => "asaas"
  "last_name" => ""
  "email_address" => ""
  "password" => ""
  "password_confirmation" => ""
]
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()必须是的实例 Illumb\Http\请求,给定数组,在中调用


正如我所预料的,因为应该传递
$request
,而不是传递带有
json()->all()的请求。如何处理错误?

像这样使用验证器

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


为什么必须使用
$request->json()->all()
?不能将数组传递给validate,它必须是请求对象。