2

我希望创建一个名为“导航”的助手,而不是将重复的数据粘贴到我的控制器中,这将用于每个控制器并加载到导航子视图中。

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

// 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 个子目录变量都想成为全局变量。

4

2 回答 2

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 

在这里阅读更多。

在辅助函数中:

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.

于 2012-06-11T09:54:38.830 回答
0

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

我使用Williams Concepts的模板库

于 2012-06-11T09:43:31.800 回答