CodeIgniter中视图调用同一模型函数无法获取数据问题咨询
问题分析与解决方案
嘿,这个问题其实是数组赋值的基础误区导致的,我来帮你拆解清楚:
你现在的代码里,第一次给$data2赋值了一个包含'sekiz'键的数组,紧接着第二次又直接用array(...)重新给$data2赋值——这相当于把第一次的数组完全覆盖掉了,最终$data2里只会保留最后一次赋值的'dokuz'数据,自然看不到'sekiz'的内容;而单条赋值时没有覆盖操作,所以能正常工作。
正确的写法有两种:
一次性定义完整数组
把两个键值对放在同一个数组定义里,这样就能同时保留两个数据:$data2 = array( 'sekiz' => $this->Database_Model->hafalik_randevu('08:00', $tarih1, $tarih2), 'dokuz' => $this->Database_Model->hafalik_randevu('09:00', $tarih1, $tarih2) );分步追加数组元素
先初始化一个空数组,再逐个添加键值对,避免覆盖:$data2 = array(); $data2['sekiz'] = $this->Database_Model->hafalik_randevu('08:00', $tarih1, $tarih2); $data2['dokuz'] = $this->Database_Model->hafalik_randevu('09:00', $tarih1, $tarih2);
额外的CodeIgniter最佳实践提醒
虽然CodeIgniter允许在视图里直接调用模型,但更规范的做法是把数据逻辑放在控制器中处理,再把组装好的数据传递给视图,这样视图只负责展示内容,代码结构更清晰、易维护:
比如在控制器中:
public function randevu_goruntule() { // 假设这里已经获取到$tarih1和$tarih2的值 $tarih1 = '2024-05-01'; $tarih2 = '2024-05-07'; // 调用模型获取数据并组装数组 $view_data = array( 'sekiz' => $this->Database_Model->hafalik_randevu('08:00', $tarih1, $tarih2), 'dokuz' => $this->Database_Model->hafalik_randevu('09:00', $tarih1, $tarih2) ); // 把数据传递给视图 $this->load->view('randevu_view', $view_data); }
然后在视图randevu_view.php里,直接使用$sekiz和$dokuz就可以访问对应的数据了,不用再在视图里处理模型调用和数组组装~
内容的提问来源于stack exchange,提问作者Fatih Ay
相关产品推荐
相关产品推荐

