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

CodeIgniter3视图报错:Undefined variable: data 求修复方案

CodeIgniter3 视图未定义变量错误修复

错误根源

  • 控制器向视图传递的数组键为item,但视图中错误地尝试访问未定义的$data变量,导致报错。
  • 循环代码存在变量名冲突:即使变量名正确,将循环元素命名为$data会覆盖原变量,引发后续迭代异常。

具体修复步骤

1. 修改视图代码(sale/sale_form.php)

将循环依赖的变量改为控制器传递的$item,同时将循环元素重命名为$row避免冲突:

<?php foreach ($item as $i => $row) { ?>
    <tr>
        <td><?=$row->barcode ?></td>
        <td><?=$row->name ?></td>
    </tr>
<?php } ?>

2. 控制器代码无需修改(逻辑正确)

当前控制器已正确加载模型并传递item变量:

$this->load->model('item_m');
$item = $this->item_m->get()->result();
$data = ['item' => $item];
$this->template->load('template','transaction/sale/sale_form', $data);

3. 模型代码无需修改(逻辑正确)

模型get()方法返回的查询对象,通过->result()可正确获取对象数组:

public function get($id = null)
{
    $this->db->select('p_item.*,p_category.name as category_name, p_unit.name as  unit_name');
    $this->db->from('p_item');
    $this->db->join('p_category','p_category.category_id = p_item.category_id');
    $this->db->join('p_unit','p_unit.unit_id = p_item.unit_id');
    if($id != null) {
        $this->db->where('item_id', $id);
    }
    $this->db->order_by('barcode','asc');
    $query = $this->db->get();
    return $query;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 16:27:09