我希望创建一个名为" 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个子变量都想成为全局变量。
答案 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模板。
中的模板库