CodeIgniter - 从db中选择数据,对所有视图都是通用的

时间:2012-04-25 16:36:45

标签: codeigniter view

我对CI很新。 :)

在我的项目中,我将页面分为页眉,页脚和正文。并且基于控制器加载主体部分(视图)。页眉和页脚对所有页面都是通用的。

例如,对于登录页面,它将是这样的:

$this->load->view('header');
$this->load->view('login');
$this->load->view('footer');

但现在我关心的是,如何生成“类别”部分(将列出正文部分左侧的几个类别名称)。点击类别后,相应的详细信息页面将显示在右侧(即内容部分)。因此,在所有视图(所有页面)中,我需要显示类别列表。

视觉示例:

----------------------------
   Header Portion of Page
----------------------------
       Body Portion
       ============
Cat1 |
Cat2 |
Cat3 |     Content
Cat4 |
Cat5 |
----------------------------
          Footer
----------------------------

这些类别是从db。

中的数据填充的

我刚做了一些搜索。所以,我正在考虑创建一个辅助类并自动加载它。因此,在所有视图中,我都会调用函数并回显结果。

例如:

function hlp_getCategories()
{
    $ci =& get_instance();
    $q = $ci->db->query('SELECT cat_name FROM tblCategories');
            return $q;
}

在视图中:

<?php
$q = hlp_getCategories();
foreach ($q->result_array() as $row)
{
   echo anchor('cat/' . $row['cat_name'], $row['cat_name']) ;
}
?>

这是正确的做法吗? 我是在正确的轨道吗?

提前致谢:)

1 个答案:

答案 0 :(得分:2)

这是解决它的一种方法 - 尽管如果你遵循严格的MVC方法 - 帮助者会调用模型$ this-&gt; category-&gt; select_cat(),并将SQL查询放在模型中。此外,SQL查询应使用活动记录选择,而不是文本SQL查询。

另一种解决方法是使用一些对左侧菜单(即类别)有DIV的CSS,以及右侧的DIV(即内容)。

然后你可以做

 $this->load->view('header'); 
 $this->load->view('categories');
 $this->load->view('login'); 
 $this->load->view('footer'); 

然后在您的类别视图中

 <div class = "left">
     // show categories here
 </div>

并在您的内容视图中

  <div class = "right">
     // show content here
 </div>