首页 > 解决方案 > PHP Laravel 视图 json

问题描述

我在从控制器显示 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 Illuminate\Http\JsonResponse as array

标签: phplaravel

解决方案


看起来您正在尝试使用单个函数为多个端点(一个 json 和一个视图)返回数据。这很好,只是共享函数应该返回一个数组而不是 JsonResponse。JsonResponse 类不是 JSON 对象,它是一个 Response 对象,除了所有响应数据(如标头、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);
}

推荐阅读