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

如何将数组变量(Blade模板)传递到CodeIgniter视图?

问题分析

你当前的遍历失效问题,核心原因是控制器传递数据的方式不对:
在控制器中,你调用$this->blade->view('welcome_message', $data['student']);时,传递的是$data['student']数组的键值对(也就是rollno和name会变成视图里的单独变量$rollno、$name),而不是把student这个数组作为一个整体变量传给视图。所以视图里的$student变量根本不存在,自然无法用@foreach遍历。

解决方案

有两种修正方式,根据你的需求选择:

方式一:传递完整的$data数组

如果你希望保持$data的结构,把整个数组传给视图,修改控制器代码:

class Welcome extends CI_Controller {
    public function index() {
        $data['student'] = array('rollno' => '1','name' => 'Joyy');
        // 传递整个$data数组,而非$data['student']
        $this->blade->view('welcome_message', $data);
    }
}

此时视图里就能正常拿到$student变量,遍历代码可以正常工作(建议加上键名,让遍历结果更清晰):

{{$name}} // 依然可以输出Joyy
@foreach($student as $key => $value) 
    <h2>{{ $key }}: {{ $value }}</h2>
@endforeach

方式二:直接传递包含student的数组

如果不需要完整的$data结构,也可以直接构造包含student键的数组传递:

class Welcome extends CI_Controller {
    public function index() {
        $student = array('rollno' => '1','name' => 'Joyy');
        $this->blade->view('welcome_message', ['student' => $student]);
    }
}

视图代码和方式一的视图代码一致即可正常遍历。

补充说明

当你传递数组给Blade视图时,框架会把数组的每个键转换为视图中的独立变量。比如传['name' => 'Joyy'],视图里就有$name;但如果传的是['student' => [...]],视图里就会有$student这个变量,它的值就是你定义的学生数组。

内容的提问来源于stack exchange,提问作者Maulik Pipaliya Joyy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:23:05