我在显示从控制器到视图的JSON时遇到了一些问题。如果我只返回JSON响应。
{"result":true,"title":"Cable"}
正常。
但是,当我尝试实施刀片时,它无法正常工作。我在控制器中这样做。
$data1 = $getProduct->index();
$data = array(
'title'=> $data1['title'],
'Description'=>'This is New Application',
);
和此视图
{{ $title }}
和错误,例如
Cannot use object of type IlluminateHttpJsonResponse as array
看起来您正在尝试使用单个函数返回多个端点的数据(一个JSON和一个视图(。这很好,除非共享函数应返回数组而不是jsonresponse。JSONRESPONSE类不是JSON对象,它是一个响应对象,除所有响应数据(如标头,cookie等(外,还具有数据。
。更新index()
以返回数组。从您的评论中,听起来像是在控制器中包含,但在其他控制器中使用。这应该生活在自己的班级中,然后从任何需要它的控制器中调用。
public function index()
{
// retrieve/generate data
return [ 'result' => true, 'title' => $title, 'orders' => $orders ];
}
然后在您的JSON路线中:
public function jsonEndpoint()
{
return response()->json($getProduct()->index());
}
然后在刀片路线中进行:
public function bladeEndpoint()
{
$data1 = $getProduct->index();
$data = array(
'title'=> $data1['title'],
'Description'=>'This is New Application',
);
return view('view_name', $data);
}
类IlluminateHttpJsonResponse
表明您的返回数据不是数组,而是对象。
基于此,您应该做这样的事情:
$data1 = $getProduct->index();
// As $data1 is IlluminateHttpJsonResponse
// you need to get the data in object format (not array)
$data = array(
'title'=> $data->title,
'Description'=>'This is New Application',
);
应该做的。
注意:如果$data1
为null,则您的JSON格式不好。
请参阅照明 http jsonresponse官方文档
尝试使用dd(your_object(或dump(your_object(,以查看对象内部的内容,然后按照响应
您可以简单地使用json_decode()
将JSON对象转换为PHP数组
$data = json_decode($data1);
echo $data->title; // Cable