2016-05-15 6 views
1

カスタム検証ルールを設定することはできませんが、効果なしと -ルーメンは、私は、カスタム検証メッセージを設定するには、このコードを試してみてください

{ 
    "error": "The given data failed to pass validation." 
} 

何間違った - しかし、エラー時に私はこの応答を得た

class TestController extends Controller 
{ 
    public function submit(Request $request) 
    { 
     $this->validate($request, 
      [ 
       'items' => 'required' 
      ], 
      [ 
       'items.required' => 'test test' 
      ] 
     ); 
    } 
} 

このコードで?

UPD:

以前の私は、特定のフォーマットで(APIレスポンスで)エラーを置くためにApp\Exceptions\Handlerを編集 -

public function render($request, Exception $e) 
{ 
    return response([ 
     'error' => $e->getMessage() 
    ], 500); 
} 

-

{ 
    "error": "123" 
} 

このコードは、検証エラーが示されていないということの理由でありますこの目的でHandler::renderメソッドを更新する

public function render($request, Exception $e) { 
    $response = parent::render($request, $e); 

    if (isset($response->exception) and !empty($response->exception)) { 
     return response(['error' => $response->exception->getMessage()], 500); 
    } else { 
     return parent::render($request, $e); 
    } 
} 

しかし、私はこのコードを改善する必要があると思います。

+0

は、あなたは自分の変更を加えることなく元の状態に例外ハンドルファイルを置くことはできますか?あなたの主な問題は、カスタムエラーメッセージが表示されないということです。 – codedge

+0

はい、私は\ exceptionを{error ":}フィールドとして表示する必要があります。しかし、検証エラーもそこに入れるのは良いことです。 – sharp

+0

https://stackoverflow.com/questions/37038229/laravel-5-2-validation-with-api/37725464#37725464 – tanerkuc

答えて

-1

rulesmessagesが混在しているようです。 メソッドは、3つのパラメータ、request,rulesmessagesを受け取ります。

このお試しください:関連するエラーメッセージで

$this->validateヘルパー意志常にリターンJSONレスポンス:documentationを参照して、最新のルーメンのバージョンは常にJSONをバック与え

public function submit(Request $request) 
{ 
    $rules = [ 
     'items' => 'required', 
     'otheritems' => 'required', 
    ]; 

    $messages = [ 
     'items.required' => 'Error: Please enter something.', 
     'otheritems.required' => 'Otheritems are also required', 
    ]; 

    $this->validate($request, $rules, $messages); 
} 

を検証が失敗したとき。 JSONレスポンスだけを送信するステートレスAPIを構築していない場合は、完全なLaravelフレームワークを使用する必要があります。 errorに関する

更新: ルーメンによって与えられた結果はそのように見えます。

{"items":["Items are required"],"otheritems":["Otheritems are also required"]} 

検証に失敗した各項目は、あなたの回答に記入されます。だからあなたのerrorバッグは、JSON配列である必要があります。

カスタム例外render方法:

public function render($request, Exception $e) 
{ 
    $response = parent::render($request, $e); 

    if ($response->getStatusCode() == 422) { 
     $renderResult = parent::render($request, $e); 
     $returnResult['error'] = json_decode($renderResult->content(), true); 
     $returnResult = json_encode($returnResult); 

     return new Response($returnResult, $response->getStatusCode()); 
    } else { 
     return parent::render($request, $e); 
    } 

} 
+0

このコードを試しますが、効果はありません。 3番目のパラメータとしての最初の例では、メッセージ配列を渡しますが、そこにはミックスしません。 – sharp

+0

$ request-> itemsの内容を表示できますか? – codedge

+0

質問を編集し、説明を追加します。結果のコードを改善するのに役立つかもしれません。どうもありがとう! – sharp

関連する問題