Response :: json() - Laravel 5.1

时间:2015-08-06 20:46:00

标签: php laravel laravel-5.1

我正在尝试return Response::json('data', $request);但是,我收到了一个错误:

  

ProjectsController.php第74行中的FatalErrorException:   调用未定义的方法Illuminate \ Http \ Response :: json()

Response::json()位于何处?我做错了什么?

6 个答案:

答案 0 :(得分:46)

使用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);
}

答案 1 :(得分:10)

经过足够的谷歌搜索后,我发现控制器的答案只需要像return \Response::json(['success' => 'hi, atiq']);这样的反斜杠。或者你可以返回数组return array('success' => 'hi, atiq');,它将在Laravel 5.2版中呈现为json。

答案 2 :(得分:3)

您需要在文件的标头中添加 use Response; 外观。

只有这样您才能使用

成功检索数据
return Response::json($data);

答案 3 :(得分:1)

从控制器中,您还可以返回一个Object / Array,它将作为JSON响应发送(包括正确的HTTP头)。

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

答案 4 :(得分:0)

尽管Response::json()在最近并不流行,但这并不能阻止您和我使用它。 实际上,您不需要任何外观即可使用它,

代替:

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

使用此:

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

使用斜杠,您肯定走的很好。

答案 5 :(得分:0)

但是,对于某些程序员来说,先前的答案仍然可能令人困惑。最特别是初学者,他们很可能使用的是旧书或教程。 也许您仍然觉得需要立面。当然可以使用。 对于我来说,我仍然很喜欢使用外观,这是因为有时在构建我的api时,我忘记在Response之前使用“ \”。

如果你像我, 只需添加

   "use Response;"

在您的课程之上...扩展了contoller。 这应该做。

现在您可以使用:

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

代替:

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