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

Laravel向Blade视图传递多份API返回数据时访问报错如何解决?

错误原因

  1. 初始传参写法错误:Laravel 的view()方法仅支持第二个参数传入完整的视图数据数组,后续传入的$department、$company参数会被自动忽略,因此拿不到company数据。
  2. 改用compact后遍历逻辑错误:你定义的$company['companyList']本身已经是API返回的公司列表二维数组,第一层foreach遍历得到的$com就是单条公司数据,你额外加了第二层foreach遍历单条公司的字段值,此时$comp是字符串/数字类型的字段值,自然无法用company_id索引取值。

解决方法

方案1(更简洁,推荐):合并数组传参

传参时直接把三个数组合并为一个传入,视图中可以直接访问三个键名对应的变量:

// 控制器传参代码
$data['dataList'] = Http::get(Config::get('apis.section.readAll'))->json();
$company['companyList'] = Http::get(Config::get('apis.company.readAll'))->json();
$department['departmentList'] = Http::get(Config::get('apis.department.readAll'))->json();

return view('section.section', array_merge($data, $department, $company));

对应视图遍历代码,直接遍历$companyList即可,不需要多余嵌套:

@foreach($companyList as $comp)
    <option value="{{ $comp['company_id'] }}">{{ $comp['comp_name'] }}</option>
@endforeach

方案2:保留compact传参,修正遍历逻辑

如果要保留现有compact传参的写法,只需要去掉视图中多余的一层foreach即可:

@foreach($company['companyList'] as $comp)
    <option value="{{ $comp['company_id'] }}">{{ $comp['comp_name'] }}</option>
@endforeach

排查技巧

如果后续遇到类似变量结构不清晰的问题,可以在视图中用dd($company['companyList'])打印变量结构,就能快速确认遍历层级是否正确。

内容的提问来源于stack exchange,提问作者Ashiq Fardus

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 19:54:03