我有一个扩展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->视图时,这都不是一个大问题,但如果我可以跳过它,那就更好了。
答案 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)
功能来显示页眉和页脚,分别用于网站和管理页面。可选地,这些还显示由帮助者生成的公共数据。