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

CodeIgniter 3控制器无法传数据到视图,是否需放在index方法?

问题1:控制器处理逻辑是否必须放在index()方法中?

不需要,CodeIgniter 3支持自定义控制器方法,只要你按照路由规则访问对应的方法即可,index()只是控制器的默认访问方法,没有强制要求业务逻辑必须写在里面。

$donors变量未定义的问题排查方案

  • 首先确认访问路径是否正确
    CI3的默认路由规则为 [你的站点域名]/[控制器类名小写]/[方法名小写],你当前的控制器是Staff,业务逻辑写在viewDonors方法中,需要访问的地址应为 xxx.com/staff/viewdonors,如果你直接访问 xxx.com/staff 会默认走index()方法,若index()方法没有加载viewdonors视图并传递$donors参数,就会出现变量未定义的报错。
  • 修正模型加载的写法大小写问题
    CI的model加载方法首字母为小写,你当前代码里写的$this->load->Model('Donor_Model')中大写M在Linux环境下会触发模型加载失败的问题,建议修改为:
    $this->load->model('Donor_Model');
    
  • 建议模型返回格式化的查询结果
    你当前模型直接返回query对象,虽然不是变量未定义的直接原因,但会导致后续视图遍历数据出错,建议修改模型方法,返回数组或对象格式的结果:
    function viewDonors() {
        $query = $this->db->get('donors');
        // 返回对象数组用result(),返回二维数组用result_array()
        return $query->result_array();
    }
    
  • 排查是否存在重复加载视图的逻辑
    确认你的代码中没有其他位置加载了viewdonors视图但未传递$data参数,比如公共模板、其他方法中加载该视图的场景。

内容的提问来源于stack exchange,提问作者Pasindu Ruwandeniya

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 18:15:07