我是Codeigniter(CI)的新手并使用代码,但我需要一些指导来完成这些工作。
让我们说我已经在某些条件下编写了这段代码:
if(isset($_COOKIE["lang"]) && !empty($_COOKIE["lang"])){
if($_COOKIE["lang"] == "en"){
$this->lang->load('en', 'english');
}else{
$this->lang->load('du', 'dutch');
}
}else{
$cookie = array(
'name' => 'lang',
'value' => 'en',
'expire' => 604800
);
$this->input->set_cookie($cookie);
}
现在我想在每个页面上加载此代码以检查要加载的语言文件。
我试过这种方式:
public function __construct(){
parent::__construct();
if(isset($_COOKIE["lang"]) && !empty($_COOKIE["lang"])){
if($_COOKIE["lang"] == "en"){
$this->lang->load('en', 'english');
}else{
$this->lang->load('du', 'dutch');
}
}else{
$cookie = array(
'name' => 'lang',
'value' => 'en',
'expire' => 604800
);
$this->input->set_cookie($cookie);
}
}
但如果我有很多控制器文件,那么我就无法更改每个文件。是否有任何简单的方法可以在codeigniter中的一个地方进行管理。
答案 0 :(得分:1)
您可以使用CI Hooks
来实现此目的确保在 application / config / config.php 中启用了挂钩:
$config['enable_hooks'] = TRUE;
$hook['pre_controller'] = function()
{
$CI =& get_instance();
if(isset($_COOKIE["lang"]) && !empty($_COOKIE["lang"])){
if($_COOKIE["lang"] == "en"){
$CI->lang->load('en', 'english');
}else{
$CI->lang->load('du', 'dutch');
}
}else{
$cookie = array(
'name' => 'lang',
'value' => 'en',
'expire' => 604800
);
$CI->input->set_cookie($cookie);
}
};