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

CodeIgniter向视图传数据时出现Undefined variable报错如何解决

问题根因及解决方案

该报错核心是timeline.php视图被加载时,控制器没有将$result变量传递到视图层,结合你提供的代码和报错回溯,常见原因和修复方案如下:

    1. 未加载对应模型
      你在控制器displayDiscussion方法中调用$this->discussions->displayDisc()之前,没有加载discussions模型。模型未加载的情况下,调用模型方法会抛出异常,导致$data['result']没有被成功赋值,传递到视图的参数中自然不存在$result变量。
      修复代码:
    public function displayDiscussion()
    {
        // 先加载模型,注意模型文件名大小写要和传入参数匹配
        $this->load->model('discussions');
        $data['result'] = $this->discussions->displayDisc();
        $this->load->view('timeline',$data);
    }
    
    1. 访问路由不匹配
      报错回溯显示Home.php第14行调用了view('timeline'),请确认这行代码所属的方法是不是displayDiscussion。如果是Home控制器的index等其他方法中直接加载了timeline视图,且没有传递$result参数,你访问默认路由时就会触发报错。
      修复方式:确保你访问的是指向displayDiscussion方法的路由,默认格式为你的域名/home/displayDiscussion;如果需要在首页展示相关内容,把查询赋值逻辑迁移到对应加载timeline视图的方法中即可。
    1. 视图兼容优化
      即便参数传递正常,如果数据库中没有匹配的查询结果,$query->result()会返回空数组,遍历不会触发报错,但为了避免极端情况下参数未传递的问题,可以在视图遍历前加判空逻辑:
    <table>
    <tr>
    <?php if (isset($result) && !empty($result)): ?>
        <?php foreach ($result as $row) { ?>
        <td><?php echo $row->title; ?></td>
        <td><?php echo $row->content; ?></td>
        <td><?php echo $row->username; ?></td>
        <td><?php echo $row->dateTime; ?></td>
        <?php } ?>
    <?php else: ?>
        <td colspan="4">暂无讨论内容</td>
    <?php endif; ?>
    </tr>
    </table>
    

内容的提问来源于stack exchange,提问作者Dimitar Petrov

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 07:24:06