自动将数据变量传递给代码点火器中的视图

时间:2013-09-23 12:48:49

标签: php codeigniter variables

我有一个扩展CI_Controller的控制器类:

class Admin_Controller extends CI_Controller {      
    var $data;

    function __construct () {
        parent::__construct ();

        $this->load->model ('loginm');

        if(!$this->loginm->is_login_admin ())
            redirect (base_url ('admin_login'));

        $this->data['page_title'] = 'Default page title';
        $this->data['page_url'] = $this->uri->segment (2);
    }
}

在其他扩展此类的类中,我必须将$ this->数据变量传递给我在方法中调用的每个视图。当我调用$ this-> load-> view('viewname',$ this-> data)时,是否有一些hack或配置允许我自动传递this->数据变量而不是每次都传递它?每次调用this-> load->视图时,这都不是一个大问题,但如果我可以跳过它,那就更好了。

2 个答案:

答案 0 :(得分:1)

您可以在Admin_Controller中编写一个函数来包装$this->load->view()方法

public function loadView($viewname) {
   $this->load->view($viewname, $this->data);
}

然后只需致电$this->loadView('viewname');

答案 1 :(得分:0)

您可以重载CI_Loader core class并为视图函数添加包装器,并将公共数据生成移动到辅助函数。

就个人而言,我总是创建MY_Loader::site_view($view, $data)MY_Loader::admin_view($view, $data)功能来显示页眉和页脚,分别用于网站和管理页面。可选地,这些还显示由帮助者生成的公共数据。