webyjh 发表于 2009-9-16 23:06:43

header这种公用的视图中读取数据库问题,怎么简化代码?

我的项目中有一个header.php视图,是所有控制器都要使用到的,因为要从数据库中读取当前的上课班级,所以就写了一个model

<?php
class Configs extends Model{
    function Configs()
    {      
      parent::Model();
    }
   
    function getActiveClass(){
   $this->db->select('active_class');
   $q=$this->db->get('configs')->result_array();
      return $q['active_class'];
    }
}

然后在控制器中写

//取当前上课班级,渲染头部视图
      $this->load->model('Configs','',True);
      $active_class=$this->Configs->getActiveClass();      
      $this->load->view('common/header',array('title'=>'网站首页',
                  'active_class'=>$active_class));

问题来了,是不是每个调用了header.php视图的控制器都要写上面这段代码呢,如何实现代码复用呢?



12999659 发表于 2009-9-16 23:16:31

每次更新课程时,生成静态页面,然后根据需要,在页面里面<!-- #include virtual="/file/ grade1.html"   -->

tmnh168 发表于 2009-9-16 23:30:03

把重复的代码写到一个plugin中,然后load进来,如何?
或者写成一个php,include进来?

webyjh 发表于 2009-9-17 00:02:32

把重复的代码写到一个plugin中,然后load进来,如何?
或者写成一个php,include进来?

tmnh168 发表于 2009-9-16 23:30 http://codeigniter.org.cn/forums/images/common/back.gif

好主意,可以让2行代码变成1行,呵呵

sinopf 发表于 2009-9-17 00:28:16

你的类名称真够。。。

Hex 发表于 2009-9-17 00:37:03

楼主可能需要的是 HMVC
http://codeigniter.org.cn/forums/thread-1319-1-1.html

webyjh 发表于 2009-9-17 11:15:57

汗,实现起来好麻烦啊

乌有 发表于 2009-9-17 12:27:48

我现在的方法是写成一个helper..然后自动载入就可以直接在那些公用页面使用了.
但是没有比较过这样的性能影响大不大.也盼各位了解的可以讲一下.

Hex 发表于 2009-9-17 14:03:15

汗,实现起来好麻烦啊
webyjh 发表于 2009-9-17 11:15 http://codeigniter.org.cn/forums/images/common/back.gif
直接用我做的 HMVC 类库就可以了呀。

12999659 发表于 2009-9-17 18:31:33

貌似我说的哪种方法最简单,哈哈
页: [1] 2
查看完整版本: header这种公用的视图中读取数据库问题,怎么简化代码?