2017-12-15 26 views
0

検証リクエストでいくつかのプロパティをオーバーライドして、検証が失敗した場合の処理​​を制御できますか?私は、ユーザーの検証要求していLaravel 5.5。検証要求のリダイレクト/応答

を(私は、コントローラ内の検証を使用する必要はありません):

public function postRegisterAjax(UserRegistrationValidationRequest $request) 
{ 
    ... 
    return $this->responseJson($status, $msg); 
} 

私が必要:

public function rules() 
{ 
    return [ 
     'email'     => 'required|email|max:255|unique:user', 
     'name'     => 'required', 
     'password'    => 'required|min:6', 
     'password_confirmation' => 'required|min:6|same:password' 
    ]; 
} 

とをAJAXコールはこの問題が発生したメソッドを登録するためになされたとき$msgを更新して、JSを介して検証エラーメッセージを動的に返すことができます。

EDIT:(私のカスタムフォームのリクエストで)私の最終的な解決策

public function failedValidation(Validator $validator) 
{ 
    if ($validator->fails()) { 
     $status = Status::ERROR; 
     throw new HttpResponseException(response()->json(["response" => [ 
      'msg' => $validator->errors()->all(':message'), 
      'status' => $status 
     ]])); 
    } 

    return response()->json(["response" => [ 
     'msg' => 'User successfully registered', 
     'status' => Status::SUCCESS 
    ]]); 
} 

答えて

1

検証エラーメッセージ戻るには:Laravelで

をフォーム要求の検証、検証faの場合ilsでは、AJAXリクエストの場合、JSON応答が返されます。 JSONレスポンスは、すべての検証エラーを保持します。 ajaxエラーレスポンスでアクセスできます。 (エラー応答をダンプすると、responseJSONに表示されます)。

error bagにロジック/検証とエラーを追加したい場合はafter-validation-hookを使用できます。

はあなたの応答にfollwingようlaravel form requestの応答方法、

public function response(array $errors) 
    { 
     return response()->json(['status' => $status, "response" => $errors]); 
    } 

を上書きすることができUPDATE

次のことができるようになり、それが

..あなたを助けることを願っていますエラーにはdata.response

+0

'responseJSON'の代わりに'response'プロパティ? – Norgul

+0

あなたが正しいとわかったら、あなたは 'response.responeJSON'としてあなたの希望する' response'にアクセスできます。 –

+0

私は 'data.responseJSON'(関数の引数で渡した内容に応じて、あなたが書いたものと同じです)でアクセスできますが、' data.response'を持っています。代わりに 'responseJSON'を' response'と呼ぶように変更することが可能なのではないでしょうか? – Norgul

0

更新:

public function postRegisterAjax(UserRegistrationValidationRequest $request) 
{ 
     $validator = Validator::make($data, $rules); 
     if ($validator->fails()) { 
      $msg = $validator->errors(); 
      return $this->responseJson($status, $msg); 
     } 
} 
+0

のようにアクセスしてください。それは私の質問ではありませんでした。あなたはjsonの応答を返すことができる前に検証が失敗するので、メッセージは決してajaxに送られません – Norgul

+0

更新された答えを試してください –

+0

そして、あなたは$ dataと$ rulesをどこから取得しますか?あなたは$ request-> all()と$ this-> rules()を意味します。 – Amarnasan

関連する問題