2017-06-26 12 views
-1

検証問題についてのメッセージも提供する必要があるAPIを開発しています。私は基本的にすべてのValidationExceptionsをキャッチし、上記と同じことを行うには、「一般的な」解決策を望んしかし - 私はこれは素晴らしい作品。このLaravelはjsonでValidationエラーのエラーバッグを常に返します

if ($validator->fails()) { 
    return response()->json($validator->errors(), 400); 
} 

のようなものをやっている「ハードコード」のバリデータ

私はすでに私が

答えて

0

をしたい、実際の関連データを返すの適切な方法を見つけることができませんしかし、それはちょっと間抜けだHandler.php

public function render($request, Exception $exception) 
{ 
    $message = $exception->getMessage(); 

    if (is_object($message)) { 
     $message = $message->toArray(); 
    } 

    if ($exception instanceof ValidationException) { 
     return response()->json($message, 400); 
    } 

    ... 
} 

のレンダリング機能で遊んでしようとした - 実際にlaravelはすでに私が望むものを提供しました。

public function render($request, Exception $e) 
{ 
    $e = $this->prepareException($e); 

    if ($e instanceof HttpResponseException) { 
     return $e->getResponse(); 
    } elseif ($e instanceof AuthenticationException) { 
     return $this->unauthenticated($request, $e); 
    } elseif ($e instanceof ValidationException) { 
     return $this->convertValidationExceptionToResponse($e, $request); 
    } 

    return $this->prepareResponse($request, $e); 
} 

をしてconvertValidationExceptionToResponse::だから正確にあなたはいつもそれは、あなたが検証にドキュメントが言う方法を行うことができますJSONを返すようにしたい場合は、私は

+0

を望ん

if ($e->response) { return $e->response; } $errors = $e->validator->errors()->getMessages(); if ($request->expectsJson()) { return response()->json($errors, 422); } return redirect()->back()->withInput( $request->input() )->withErrors($errors); 

ハンドラはありませんexceptionHandlerのを拡張します: '$ this-> validate($ request、$ rules、$ messages)'を呼び出し、 'Illuminate \ Foundation \ Validation \ ValidatesRequests'特性の' buildFailedValidationResponse'メソッドをオーバーライドして、常にjsonレスポンスを構築します。 – Bryan

関連する問題