我在Codeigniter中有一些像这样的控制器
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Main extends CI_Controller {
function __construct()
{
parent::__construct();
// Load globals
$data->mail = new phpmailer();
$data->minified = new Minifier($vars_minified);
$this->load->vars($data);
}
public function index()
{
$this->home();
}
public function home()
{
$data['meta_title'] = seo::text($this->lang->line('home_title'), 70);
$data['body_render']='view_home';
$this->load->view("/layouts/view_layout", $data);
}
}
这是家庭控制器,有__construct 现在我想制作像页面一样的新控制器,但是问题是使用contruct,我是否必须在该控制器中重复__construct,或者我只是可以把它以某种方式说明所有控制器都会让我们联合起来?
这是页面控制器
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Main extends CI_Controller {
function __construct()
{
parent::__construct();
// Load globals
$data->mail = new phpmailer();
$data->minified = new Minifier($vars_minified);
$this->load->vars($data);
}
public function index()
{
$this->page();
}
public function page()
{
$data['meta_title'] = seo::text($this->lang->line('home_title'), 70);
$data['body_render']='view_page';
$this->load->view("/layouts/view_layout", $data);
}
}
你看,我在顶部再次__construct,是否有可能摆脱它,并制作一个独特的__construct?
答案 0 :(得分:1)
是的,请遵循此guide。
完成后,您可以为所有Public_Controller
[s],Admin_Controller
[s]等设置__construct。
这正是你想要的。
请注意,在此步骤之后,您发送给视图的变量将发生一些变化:从$data['key']
到$this->data['key']
将您的数据视为Public_Controller或Admin_Controller等范围内的“全局”
如果有任何问题发表评论或阅读this core extending guide by ellislab或此SO thread,我会提及此方法。