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

Printing JSON response in PHP using Laravel framework

我一直在开发一个从数据库收集数据并打印的网络应用程序。我正在使用 Laravel 框架。我在下面显示了代码使用。我可以直接在我的 PHP 代码中显示 JSON 响应,但是如果我尝试遍历 JSON 响应,我什么也得不到。

以下是我如何使用 Laravel Facades 库生成 JSON 对象:

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

这是我用来将数据传递到 PHP 页面的代码:

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

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

  {{ $worklogs }}

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

在 PHP 页面中,我是这样编码的,但它不起作用:

我不确定我是否理解.. 首先,这就是你如何 return a json:

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

其次:迭代jSon是什么意思? 第三:您的错误消息指出未定义变量 $datas .. 而不是 $data、$datas。您是否将 $data 参数发送到视图?

首先也是最重要的,正如 Bogdan Bocioaca 在他的回答中所说的那样,您只需要 return Json 时才使用 Response::json 函数(主要用于 API,以便其他应用可以访问您的 json 数据)。例如,下面的代码将 return 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