2016-12-21 5 views
1

laravelを使用してAPIを構築していますが、クライアントがcreate()関数を呼び出してクライアントからapiを要求し、create()関数が検証が失敗した場合や、データベースを挿入するために検証されたデータを返す場合、検証が合格した場合、私はクライアントに検証エラーを返すようにしたいgetValidatedData()関数は、私のgetValidatedData機能は、これまでに以下のようなLaravelについて、内部関数のクライアントへの応答を返す方法

protected function getValidatedData(array $data) 
{ 
    // don't format this class since the rule:in should avoid space 
    $validator = Validator::make($data, [ 
     'ID' => 'required', 
     'weight' => 'required', 
    ]); 
    if ($validator->fails()) { 
     exit(Response::make(['message' => 'validation fails', 'errors' => $validator->errors()])); 
    } 
    return $data; 
} 

である私は考えていませんexit()はエラーメッセージをクライアントに返すための良い方法です。クライアントに直接的に内部機能で応答を返すことができる他の方法はありますか?例外を投げるのを使う?

答えて

1

あなたが使用できるように何ができることは、send方法を使用している:

if ($validator->fails()) { 
    Response::make(['message' => 'validation fails', 'errors' => $validator->errors()])->send(); 
} 

が、これが最善の解決策ではありません注意して、より良いが、これらのデータで例外をスローし、それを処理する追加の例のためになりますHandlerクラス。使用方法のサンプルとして

EDIT:index方法は、応答JSONとdd('xxx');として取得しますコントローラのメソッドであると仮定すると

public function index() 
{ 
    $this->xxx(); 
} 

protected function xxx() 
{ 
    \Response::make(['message' => 'validation fails', 'errors' => ['b']])->send(); 
    dd('xxx'); 
} 

はこれだった

+0

send()が機能しません。なぜなら、検証が失敗した場合、スクリプトの終了とエラーメッセージのクライアントへの返信が必要なためです。 send()を実行した後のコードはありません。編集のためのThx – mark

+0

@マーク送信すると、このレスポンスは即座に送信され、その後のコードは実行されません –

+0

私はLaravel APIを調べますが、クラスレスポンスには送信メソッドはありませんが、それを動作させるthrowResponse()。 Thx – mark

0

に実行されることはありませんLaravelの私のために働いたもの5.4

protected function innerFunction() 
{ 
    $params = [ 
     'error' => 'inner_error_code', 
     'error_description' => 'inner error full description' 
    ]; 
    response()->json($params, 503)->send(); 
} 
関連する問題