1

我有一个扩展 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->data 变量传递给我在方法中调用的每个视图。是否有一些技巧或配置允许我在调用 $this->load->view('viewname', $this->data) 时自动传递 this->data 变量而不每次都传递它?每次我调用 this->load->view 时通过都不是什么大问题,但如果我可以跳过它会更好。

4

2 回答 2

1

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

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

然后打电话$this->loadView('viewname')

于 2013-09-23T12:59:10.800 回答
0

您可以重载CI_Loader 核心类并为您的视图函数添加一个包装器,并将通用数据生成移动到一个辅助函数。

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

于 2013-09-23T13:03:58.323 回答