【问题标题】:Response::json() - Laravel 5.1响应::json() - Laravel 5.1
【发布时间】:2015-10-30 04:13:42
【问题描述】:

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

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

Response::json() 在哪里?我做错了什么?

【问题讨论】:

  • 你也可以使用 response() 助手。返回响应(['errorMsg' => [...]],400);如果您的响应是一个数组,那么助手会将数组转换为 json 并将权限设置为 header application/json。

标签: php arrays laravel laravel-5


【解决方案1】:

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

【讨论】:

  • 题外话,如何查看这些数据?仅使用 $name 为“Abigail”和 $state 为“CA”?
  • 取决于您的使用情况。一个 xhr 请求(ajax)将持有一个具有namestate 属性@MASh 的对象
  • 你能再解释一下吗?我是初学者。
  • 我不确定我能解释什么。也许你应该问一个新问题,并详细说明你想要实现的目标......@MASh
  • 如果我使用 view(someview)->with('name', "alex");然后在视图中我可以使用 {{ $name }}。像这样我会使用 {{ $state }} 获得“CA”吗?
【解决方案2】:

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

【讨论】:

  • 是的,你是救生员,但为什么我们不使用“使用”声明。您也应该解释为什么部分!
【解决方案3】:

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

只有这样您才能成功地检索您的数据

return Response::json($data);

【讨论】:

  • 请编辑更多信息。不建议使用纯代码和“试试这个”的答案,因为它们不包含可搜索的内容,也没有解释为什么有人应该“试试这个”。
【解决方案4】:

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

如果你和我一样, 只需添加

   "use Response;"

在你的班级之上...扩展控制器。 这应该可以。

有了这个,你现在可以使用了:

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

代替:

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

【讨论】:

    【解决方案5】:

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

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

    【讨论】:

      【解决方案6】:

      虽然Response::json()最近没有流行起来,但这并不能阻止你和我使用它。 事实上你不需要任何门面来使用它,

      代替:

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

      使用这个:

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

      有了斜线,你肯定很高兴。

      【讨论】:

      • 你的意思是你不需要一个“别名”来使用它?因为那是你引用的门面
      猜你喜欢
      • 2015-11-30
      • 2015-12-14
      • 2014-04-16
      • 2021-06-05
      • 2014-11-11
      • 2015-05-17
      • 2020-03-04
      • 2014-07-01
      • 2018-01-14
      相关资源
      最近更新 更多