使用Laravel框架在PHP中打印JSON响应

时间:2016-05-30 18:34:08

标签: php json laravel blade jsonresponse

我一直在开发一个从数据库和打印中收集数据的Web应用程序。我正在使用Laravel框架。我在下面显示了代码使用情况。我可以直接在我的PHP代码中显示JSON响应,但如果我尝试迭代JSON响应,我就无法得到任何东西。

以下是使用Laravel Facades库生成JSON对象的方法:

  $worklogs = Response::json($data, $this->getStatusCode(), $headers);

以下是我用于将数据传递到PHP页面的代码:

  return view('index')->with('worklogs', $worklogs);

我可以使用以下代码从PHP页面打印收集的数据:

  {{ $worklogs }}

但如果我尝试使用foreach循环迭代它,则会出现错误,如下所示:

error captured

在PHP页面中,这是我编码的方式,但它不起作用: captured index.blade.php file portion

2 个答案:

答案 0 :(得分:1)

我不确定我明白.. 首先,这是你如何返回一个json:

return Response::json([
    'hello' => $value
], $headers);

第二:你是什么意思迭代jSon? 第三:您的错误消息表明Undefined变量$ datas ..不是$ data,$ datas。你是否将$ data参数发送到视图?

答案 1 :(得分:0)

首先,Bogdan Bocioaca在他的回答中说,当你只想返回Json时,你只使用 Response::json 函数(主要用于API,以便其他应用程序可以访问你的json数据) )。例如,下面的代码将返回可能由移动应用程序读取的JSON

$worklogs = WorkLog::all();
return Response::json([
    'worklogs' => $worklogs
], $headers);

根据我对您的问题的理解,您希望将数据直接传递给视图,因此理想情况下您的代码应如下所示:

$worklogs = WorkLog::all();
return view('index',compact('worklogs'));

(请注意,上面我选择使用compact()代替with->(),因为它更干净)

然后,您可以按照自己的意愿迭代代码:

@foreach($worklogs as $worklog)
  <td>{{$worklog->id}}</td>
  <td>{{$worklog->name}}</td>
  <td>{{$worklog->company}}</td>
@endforeach