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
相关产品推荐
相关产品推荐

