Codeigniter - 如何在每个页面上加载一些代码?

时间:2015-09-17 10:58:54

标签: php codeigniter

我是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中的一个地方进行管理。

1 个答案:

答案 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);
    }
};