0

我一直在开发一个从数据库收集数据并打印的网络应用程序。我正在使用 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 页面中,这是我对其进行编码的方式,但它不起作用: 捕获的 index.blade.php 文件部分

4

2 回答 2

1

我不确定我是否理解..首先这是您返回 json 的方式:

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

第二:你是什么意思迭代json?第三:您的错误消息指出未定义变量 $datas .. not $data, $datas。您是否将 $data 参数发送到视图?

于 2016-05-30T18:41:20.420 回答
0

首先,正如 Bogdan Bocioaca 在他的回答中所说,您仅Response::json在只想返回 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
于 2016-05-31T02:57:46.213 回答