视图变量未定义:如何从Login控制器访问指定变量(CodeIgniter)
解决视图中
Undefined Variable: data的问题 看起来你遇到了视图无法获取控制器变量的问题,我帮你分析下代码里的问题并给出修复方案:
1. 修复控制器中的变量赋值错误
你在Login控制器开头的两行代码有语法错误,导致变量没有正确初始化:
// 错误写法 $this->$data['login'] = $this->Login_Model->get_news(); $this->$data['title']= 'Data Pendaftaran';
这里的$data是你手动创建的普通数组,不需要用$this->来调用,正确写法应该是:
// 正确写法 $data['login'] = $this->Login_Model->get_news(); $data['title'] = 'Data Pendaftaran';
去掉多余的$this->后,数组才能正常存储数据并传递给视图。
2. 确保访问Login控制器的正确路径
因为你的默认控制器设置为News,直接访问网站根路径会加载News控制器的方法,而不是Login的。要触发Login控制器的index方法,你需要访问:
http://你的域名/login
或者用CodeIgniter的辅助函数生成正确链接:
echo site_url('login');
只有这样,Login控制器里的$data变量才会被传递到anggotapendaftaran视图中。
3. 验证数据传递(可选调试步骤)
如果修复后还是有问题,可以在控制器中临时添加调试代码,确认模型是否返回了数据:
$data['data'] = $this->Login_Model->get_data_list($config["per_page"],$data['page']); var_dump($data['data']); // 临时查看数据结构 exit;
如果输出有正常的查询结果,说明模型没问题,变量传递的修复已经生效。
4. 修正分页配置的拼写错误
你的分页配置里有几处拼写错误,会导致分页样式异常,建议修正:
// 错误的写法(多了个l) $config['next_tagl_close'] ='<span aria-hidden="true">»</span></span></li>'; $config['prev_tagl_close'] ='</span>Next</li>'; $config['first_tagl_close'] = '</span></li>'; $config['last_tagl_close'] ='</span></li>'; // 正确写法 $config['next_tag_close'] ='<span aria-hidden="true">»</span></span></li>'; $config['prev_tag_close'] ='</span>Prev</li>'; $config['first_tag_close'] = '</span></li>'; $config['last_tag_close'] ='</span></li>';
完成以上修复后,访问login路径,视图就能正常获取到$data变量,不会再报未定义的错误了。
内容的提问来源于stack exchange,提问作者Sofie Safitri




