Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/245.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP Laravel视图json_Php_Laravel - Fatal编程技术网

PHP Laravel视图json

PHP Laravel视图json,php,laravel,Php,Laravel,我在从控制器到视图显示json时遇到一些问题。 如果我只返回json响应,我就有了 {"result":true,"title":"Cable"} 像平常一样 但当我尝试将它实现到blade时,它不起作用。我在控制器里就是这样做的 $data1 = $getProduct->index(); $data = array( 'title'=> $data1['title'], 'Description'=>'T

我在从控制器到视图显示json时遇到一些问题。 如果我只返回json响应,我就有了

{"result":true,"title":"Cable"} 
像平常一样

但当我尝试将它实现到blade时,它不起作用。我在控制器里就是这样做的

$data1 = $getProduct->index();

        $data = array(
            'title'=> $data1['title'],
            'Description'=>'This is New Application',
            );
这就是我们的看法

{{ $title }}
和错误一样

Cannot use object of type Illuminate\Http\JsonResponse as array

只需使用
json\u decode()
即可将json对象转换为php数组

$data = json_decode($data1);
echo $data->title; // Cable

看起来您正试图使用单个函数为多个端点(一个json和一个视图)返回数据。这很好,只是共享函数应该返回数组而不是JsonResponse。JsonResponse类不是JSON对象,它是一个响应对象,除了包含所有响应数据(如头、cookie等)外,还包含这些数据

更新
索引()
以返回数组。从您的评论来看,这听起来像是包含在一个控制器中,但它在另一个控制器中使用。这应该存在于它自己的类中,然后从任何需要它的控制器调用它

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);
}
然后在您的刀片路线中执行以下操作:

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);
}

illigate\Http\JsonResponse
表示返回的数据不是数组而是对象

基于此,您应该这样做:

$data1=$getProduct->index();
//由于$data1是\Http\JsonResponse
//您需要以对象格式(而不是数组)获取数据
$data=数组(
'title'=>$data->title,
'Description'=>'这是新应用程序',
);
应该这样做

注意:如果
$data1
为空,则您的json格式错误


尝试使用dd(您的_对象)或dump(您的_对象)查看对象内部的内容,然后将其作为响应发送

当我这样做时,它是空的。您可以执行
打印(getProduct->index())并粘贴ResultlLuminate\Http\JsonResponse对象([data:protected]=>{“result”:true,“title”:“Cable”}….尝试获取非对象的属性“title”可以显示更多控制器吗?
getIndex()
返回什么?看起来它返回的是JsonResponse,而不仅仅是JSON。是的,这是return….return response()->json(['result'=>true,'title'=>$title,'orders'=>$orders,//'description'=>$description,'var'=>$var,'images'=>$images,]200);这是您的问题,您不应该使用
response()->json()
如果要返回刀片,请执行返回视图('view\u name',['result'=>true,…])
。由于您是从另一个方法调用该方法,因此您似乎使用了错误的控制器,在没有更多信息的情况下,我无法建议如何修复该方法。
$getProduct
包含什么?是另一个控制器吗?我正在将信息从一个控制器返回到另一个控制器。这就是我尝试返回json的原因,此返回为
>$getProduct->index()
,现在当我只显示getProduct时,我可以看到json响应,当我解码它时,它是空的,当我编码它时,我会返回像
{headers:{},original:{“title”:“Cable”}}
当你执行
响应()->json()时
返回的不是JSON对象,而是包含JSON的响应对象。这是两件截然不同的事情。