2017-06-01 147 views
2

我想在流明中使用$this->validate助手。但是,根據請求,我只需要執行$request->json()->all()而不是$request->all(),這是因爲當我使用後者時,我無法獲取確切的參數及其值(即使字段具有值,它仍會將其標記爲失敗)。驗證laravel錯誤

$請求 - > JSON() - >所有()輸出:

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', 
]); 

這將拋出一個錯誤:

Type error: Argument 1 passed to Laravel\Lumen\Routing\Controller::validate() must be an instance of Illuminate\Http\Request, array given, called in

如我所料,因爲$request應傳遞不是一個與json()->all()。我能做些什麼來解決這個錯誤?

+0

爲什麼你使用'$請求 - > JSON() - >所有()'?您不能將數組傳遞給驗證,它需要是Request對象。 –

回答

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