1
私はLaravel 5.4認証プロセスを使用してAJAXベースのログインを実装しています。Laravel検証応答AJAX経由
AuthenticatesUsers
形質法より優先されている(私は422
回答を得続けるので、いくつかの研究の後、私は私のLoginController
でこの検証方法を思い付いた:
protected function validateLogin(Request $request)
{
$validator = Validator::make($request->all(), [
$this->username() => 'required|email|max:50|unique:users',
'nickname' => 'required|max:30|min:6|unique:users',
'password' => 'required|confirmed|min:6',
]);
if ($validator->fails()) {
$responseBag = $validator->getMessageBag()->toArray();
$responseBag['type'] = ['error'];
if($request->ajax()) {
return response()->json($responseBag, 422);
}
$this->throwValidationException(
$request, $validator
);
}
}
を、私はこの応答を期待しています:
array:3 [
"nickname" => array:1 [
0 => "The nickname field is required."
]
"password" => array:1 [
0 => "The password confirmation does not match."
]
"type" => array:1 [
0 => "error"
]
]
しかし、私はこの応答を受け取ります。
応答の前にI dd($messageBag)
を入力すると、予期した結果が得られます。私は何が欠けていますか?
こんにちは、返信いただきありがとうございます。 'if'ステートメントの前に' dd($ request-> ajax()) 'を実行するとtrueを返します。 'if'ステートメントの中に' dd'を置くと、それがトリガーされるので、 'return JSON'ステートメントに到達しています。また、 '$ .ajax'関数で' post'に 'jQuery'(V3、最新)を使っています。これは以前のところ働いていました。 LaravelのバージョンはOKです。 – TheRealPapa
@TheRealPapaありがとうございます。更新された回答をご覧ください。 –