You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel中Guzzle请求变量传视图报错:Trying to get property of non-object

问题原因及解决方案

这个问题我太熟了!你遇到的错误根源其实很简单——你把JSON响应转换成了关联数组,但视图里却用了对象的属性访问语法。

具体分析:

在你的控制器代码中,这一行是关键:

$clientes = json_decode($result, true);

json_decode的第二个参数设为true时,会将JSON字符串解析成关联数组;如果省略这个参数(或者设为false),则会解析成stdClass对象。

而你的Blade视图里,却用了对象的访问方式:

<td>{{$value->name}}</td>

PHP尝试从一个数组($value是数组)中获取对象属性,自然会抛出Trying to get property of non-object的错误。

两种解决方法:

你可以任选一种来修复这个问题:

方法1:修改控制器,让JSON解析为对象

把json_decode的第二个参数去掉,同时调整items的访问方式为对象属性:

$client = new Client();
$res = $client->request('GET', 'https://api.iugu.com/v1/customers?api_token=secret');
$result = $res->getBody();
$clientes = json_decode($result); // 去掉true参数,返回对象
return view('sections.client.index')->with('clients', $clientes->items); // 用->访问items属性

方法2:保持数组解析,修改视图为数组访问语法

控制器代码不变,把视图里的对象访问改成数组键名访问:

@foreach($clients as $value)
<tr>
<td>{{$value['name']}}</td>
<td>{{$value['email']}}</td>
<td>{{$value['number']}}</td>
</tr>
@endforeach

额外提醒:

虽然你确认JSON里有对应值,但还是建议你临时在控制器里加一行dd($clientes['items']);,打印出实际的数组结构,确认name、email、number这些键名的拼写和大小写是否完全匹配,避免因为键名错误导致的其他问题。

内容的提问来源于stack exchange,提问作者Vinícius

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:05:03