2017-02-18 13 views
-1

は、今では、データを取得するために、私はJSONとしてデータを返すコントローラからメソッドを呼び出します。Laravelで応答するHTTPデータを追加するには?

return response()->json([$data]); 

私はこのレスポンスグローバルデータに追加することはできますか?そして$dataをマージしますか?例えば

私はそれぞれの方法で、以下のエントリを避けるために、各HTTPレスポンスに離れて与えたいとグローバル$userオブジェクトがあります。

return response()->json(["data" => $data, "user" => $user]); 
+0

あなたはあなたが持っていると思いますか?答えはすでに与えられています、それはあなたの質問にすでに答えていますか? –

+0

あなたの質問に答えた回答がありますか? –

答えて

2

があなたとLaravelの応答をラップするために、独自のPHPのクラスや関数を作成します自分のデータ。例:

function jsonResponse($data) 
{ 
    return response()->json([ 
     'user' => $user, 
     'data' => $data, 
    ]); 
} 

次に、あなたが呼び出すことができます。

return jsonResponse($data); 

をこれはあなたのプログラムDRYを維持する方法の単なる一例です。あなたが成長し、維持することを期待しているアプリケーションを作成しているなら、thisのような何かをしてください。

+0

@mj私の編集をチェックできますか?質問が少し不明であるので、それが大丈夫かどうか分からない。 –

+0

@OmisakinOluwatobiうん、それはうまくいきます。実際には、質問に基づいてカプセル化の概念を明確にしています。 – ryannjohnson

+0

は、この関数で '$ user'変数が実際に_being accessible_のようにグローバルである場合のみです。質問者がもっと光を当てることを願っています... –

1

@ rnjの答えに代わる方法は、ミドルウェアを使うことです。

https://laravel.com/docs/5.4/middleware#global-middleware

これはあなたの代わりに、要求にフックするのではなく、あなたが後で必要/したくないことを決定することができるヘルパー関数を使用することができるようになります。

のようなものになりますあなたのためのミドルウェアhandle方法:このことができます

public function handle($request, Closure $next) 
{ 
    $response = $next($request); 

    $content = json_decode($response->content(), true); 

    //Check if the response is JSON 
    if (json_last_error() == JSON_ERROR_NONE) { 

     $response->setContent(array_merge(
      $content, 
      [ 
       //extra data goes here 
      ] 
     )); 

    } 


    return $response; 
} 

希望を!

関連する問題