codeigniter版本3中的钩子

时间:2017-05-30 11:23:32

标签: codeigniter

我正在使用codeigniter 3.我已在我的钩子文件中启用了挂钩

$hook['pre_controller'] = array(
        'class'    => 'myclass',
        'function' => 'myfunction',
        'filename' => 'myfile.php',
        'filepath' => 'hooks',
        'params'   => ''
);

启用挂钩我收到错误

`Unable to locate the specified class: Session.php` 

请帮助解决上述错误。我在配置文件中启用了驱动程序和库。

这是我在钩子中使用的代码

class Check_login extends CI_Controller
{
    public function CheckLoggin()
    {
        $url = $this->uri->segment(1);
        if($url == "givenparameter")
        {
            $login_id = $this->session->userdata("ID");
            $get_url = $this->uri->segment(2);
            if($login_id == "" && $get_url != 'login')
            {
                redirect('controller/login', 'refresh');
            }
        }
    }
}

2 个答案:

答案 0 :(得分:0)

Hook依赖于会话类。因此,请尝试将pre_controller挂钩更改为post_controller',例如

$hook['post_controller'] = array(
        'class'    => 'Myclass',
        'function' => 'Myfunction',
        'filename' => 'Myfile.php',
        'filepath' => 'hooks',
        'params'   => ''
);

如果不起作用,请尝试post_controller_constructor而不是post_controller

答案 1 :(得分:0)

钩子文件路径:application / hooks

controller filename:Blocker.php

 class Blocker {

    function Blocker(){
    }
    function requestBlocker(){
            echo "done";
    }
}

此外,您需要对此进行配置。

配置路径:application / config / hooks.php

$hook['pre_controller'] = array(
        'class'    => 'Blocker',
        'function' => 'requestBlocker',
        'filename' => 'Blocker.php',
        'filepath' => 'hooks',
        'params'   => ""
);

您还需要在配置中允许挂钩。即。应用/配置/ config.php中