2016-05-30 21 views
0

我一直在開發一個Web應用程序,它從數據庫和打印中收集數據。我正在使用Laravel框架。我在下面顯示了代碼的使用。我可以直接在我的PHP代碼中顯示JSON響應,但是如果我嘗試遍歷JSON響應,我什麼都得不到。使用Laravel框架在PHP中打印JSON響應

這是我如何生成使用Laravel外牆庫中的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

+0

你不需要首先對json進行編碼。 – jardis

+1

爲什麼你使用''Response :: json'''並返回'''view()'''我真的不明白嗎? – xdevnull

+0

發佈代碼圖片比將代碼本身發佈爲文本沒有用處。 –

回答

0

首先作爲波格丹Bocioaca他回答說,你只有當你想返回JSON只(主要爲API,以便其他應用程序可以訪問您的JSON數據)使用Response::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 
+0

我以爲我已經嘗試過你的方式,但我想我一定有過錯之前。 – Lakie

+0

嗯,我做了一個返回JSON的API。我正在製作網絡和移動應用程序。兩者都使用這些API。所以我想爲視圖和移動應用程序使用返回的json。所以我想轉換爲我的觀點的JSON。但它是直接傳遞數據庫數據的適當/安全的方式。請記住,我允許某些數據傳遞給模型。我正在嘗試的一件事是將這些收集的數據放到模型中,並將模型傳遞給視圖,那麼這些更好的方法是什麼? – Lakie

1

我不知道我的理解.. 首先這是如何返回一個JSON:

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

二:你是什麼意思遍歷JSON?第三:你的錯誤消息表明未定義的變量$ datas ..不是$ data,$ datas。你是否將$ data參數發送給視圖?