用户
 找回密码
 入住 CI 中国社区
搜索
查看: 4837|回复: 14
收起左侧

[版本 2.x] 包含文件的问题?

  [复制链接]
发表于 2011-11-19 11:22:31 | 显示全部楼层 |阅读模式
在视图A.PHP  B.PHP   C.PHP 中,使用了$this->load->view("sidebar")包含进了sidebar.php这个页面
sidebar.php这个页面中有部分是要从数据库中读出来的内容
难道要在A  B  C的控制器中把程序代码各写一遍吗,有没有办法只写一次
发表于 2011-11-19 12:32:44 | 显示全部楼层
用model
 楼主| 发表于 2011-11-19 13:48:26 | 显示全部楼层
怎么个用法,能详细说一下吗
发表于 2011-11-19 14:11:16 | 显示全部楼层
model里面写获取数据库信息的函数,然后传回控制器,控制器再用参数的方式传给视图
 楼主| 发表于 2011-11-19 14:47:09 | 显示全部楼层
你们可能没有明白我的意思啊
如图:
123.jpg
发表于 2011-11-19 16:29:17 | 显示全部楼层
本帖最后由 孤月蓝风 于 2011-11-19 16:30 编辑
tgw2000 发表于 2011-11-19 14:47
你们可能没有明白我的意思啊
如图:


我似乎依然不明白你的意思。
三个函数是要取不同的数据吗?取数据的话写在model层。
例如: model.php
function get_info($table)
{
    $query = $this->db->get($table);
    return $query->result();
}

controller.php
function index()
{
    if ( 查询 a 表 ) { $data['table'] = 'a' ; }
    if ( 查询 b 表 ) { $data['table'] = 'b' ; }
    $this->load->model('model') ;
    $data['show'] = $this->model->get_info($data) ;
    $this->load->view('side',$data);
}

只是我的想法,我还没有给模型传过参数。
 楼主| 发表于 2011-11-19 16:36:02 | 显示全部楼层
取数据的过程我已经放到模型中了,图上三个函数中绿色的代码段是相同的代码,我的意思是能不能把控制器的过程中相同的代码提取出来,然后用inclue包含
发表于 2011-11-19 16:41:42 | 显示全部楼层
   你的话真难懂……   

CI里面我还没用到过include,像我上面的代码一样,只写一个函数不就行了,调用不同的内容传不同的参数就行了啊
 楼主| 发表于 2011-11-19 17:08:52 | 显示全部楼层
我上代码吧,在三个过程中共同的代码是这一部分,   
    $data['broker'] = $this->Esf_model->getBrokerByID($bid);
        $data["price_esf"] = $this->Esf_model->type_list('house_price');
        $data["price_chuzu"] = $this->Esf_model->type_list('house_hire_price');
        $data["huxing"] = $this->Esf_model->type_list('house_huxing');
        $data['xiaoqu_esf'] = $this->Esf_model->type_xiaoqu('house_ershou',$bid);
        $data['xiaoqu_chuzu'] = $this->Esf_model->type_xiaoqu('house_chuzu',$bid);
是要把这一部分写成一个过程放模型中吗,在side中需要用这几个变量,
发表于 2011-11-19 18:46:47 | 显示全部楼层
本帖最后由 Emory.M 于 2011-11-19 19:19 编辑

可以在控制器构造函数里包含进去
建议还是学习下php面向对象基础然后再用CI 有些问题就好理解一些

类体内部的方法可以self关键字互相调用,你可以用model函数把这几个放在一起,用数组传参并返回对象集合

本版积分规则