web-dev-qa-db-ja.com

応答:: json()-Laravel 5.1

return Response::json('data', $request);しようとしていますが、エラーが発生します:

ProjectsController.php行74のFatalErrorException:未定義のメソッドIlluminate\Http\Response :: json()の呼び出し

Response::json()はどこにありますか?私は何を間違えていますか?

24
senty

代わりに laravel 5.1 のヘルパー関数を使用してください:

return response()->json(['name' => 'Abigail', 'state' => 'CA']);

これにより、\Illuminate\Routing\ResponseFactoryのインスタンスが作成されます。以下の可能なパラメーターについては、phpDocsを参照してください。

/**
* Return a new JSON response from the application.
*
* @param string|array $data
* @param int $status
* @param array $headers
* @param int $options
* @return \Symfony\Component\HttpFoundation\Response 
* @static 
*/
public static function json($data = array(), $status = 200, $headers = array(), $options = 0){

    return \Illuminate\Routing\ResponseFactory::json($data, $status, $headers, $options);
}
51
chris p bacon

十分なグーグル検索の後、return \Response::json(['success' => 'hi, atiq']);のようなバックスラッシュだけが必要なコントローラーからの答えを見つけました。または、Laravelバージョン5.2でjsonとしてレンダリングされる配列return array('success' => 'hi, atiq');を返すことができます。

10
Atiqur

ファイルのヘッダーにuse Response; facadeを追加する必要があります。

そうしてはじめて、データを正常に取得できます

return Response::json($data);
3
RASEL RANA

コントローラーからObject/Arrayを返すこともでき、それはJSON応答(正しいHTTPヘッダーを含む)として送信されます。

public function show($id)
{
    return Customer::find($id);
}
1
Wireblue

Response::json()は最近人気が出ていませんが、それはあなたと私がそれを使うことを止めるものではありません。実際、使用するためにファサードは必要ありませんが、

の代わりに:

$response = Response::json($messages, 200);

これを使って:

$response = \Response::json($messages, 200);

スラッシュを使用して、あなたは行くのは間違いありません。

ただし、以前の答えは、一部のプログラマにとっては依然として混乱を招く可能性があります。特に、古い本やチュートリアルを使用している可能性が最も高い初心者。または、おそらくあなたはまだファサードが必要だと感じています。確かに使用できます。私はまだファサードを使用するのが好きな人のために、これは私のAPIを構築しているときに、応答の前に「\」を使用するのを忘れることがあるためです.

あなたは私のような場合は、単に追加します

   "use Response;"

あなたのクラスの上に...コントローラーを拡張します。これでいいはずです。

これにより、以下を使用できます。

$response = Response::json($posts, 200);

の代わりに:

$response = \Response::json($posts, 200);