Codeigniter助手与模型数据

时间:2012-06-11 09:37:54

标签: php codeigniter

我希望创建一个名为" navigation"这将用于导航子视图中的每个控制器和负载。

目前,在EVERY控制器中我添加了以下代码。

// Get Subcategories
$subcat1 = $this->Categories_model->get_artstyles();
$subcat2 = $this->Categories_model->get_artsubjects();
$subcat3 = $this->Categories_model->get_media();
$subcat4 = $this->Categories_model->get_photography();

$this->view_data['sub_cat1'] = $subcat1->result();
$this->view_data['sub_cat2'] = $subcat2->result();
$this->view_data['sub_cat3'] = $subcat3->result();
$this->view_data['sub_cat4'] = $subcat4->result();

所以我想做的就是减少它并将数据作为帮助程序加载。所以我最终在每个控制器中所做的就是加载帮助器。

如果你认为这是错误的做法,请告知我,我仍然对CI及其方式有点不确定。

这4个子变量都想成为全局变量。

2 个答案:

答案 0 :(得分:2)

如果此数据与所有控制器相关,则应扩展CI_Controller,如下所示:

class MY_Controller extends CI_Controller {
     protected $view_data;

     public function __construct() {
         parent::__construct();         
                 $this->load->helper('nav');
                 $this->view_data = load_navigation();
     }
}

将此文件放在core目录中,并像这样扩展所有控制器:

class CONTROLLER_NAME extends MY_Controller 

了解更多here

在辅助函数中:

function load_navigation() {
         $CI =& get_instance();
         $CI->load->model('Categories_model');
         $result['sub_cat1'] = $CI->Categories_model->get_artstyles()->result();
         $result['sub_cat2'] = $CI->Categories_model->get_artsubjects()->result();
         $result['sub_cat3'] = $CI->Categories_model->get_media()->result();
         $result['sub_cat4'] = $CI->Categories_model->get_photography()->result(); 
         return $result;

}

编辑:

为了将变量加载到视图中:

$data['view_data'] = $this->view_data;
$this->load->view('MY_VIEW', $data);

在视图中,您可以像这样访问它:$view_data

答案 1 :(得分:0)

您可以使用html模板系统,并将其作为标准默认html模板。

我使用Williams Concepts

中的模板库