在CodeIgniter控制器中的任何其他方法之前运行方法

时间:2013-07-21 07:28:54

标签: php codeigniter

在CakePHP中,我们有beforeFilterafterFilter在任何控制器方法之前或之后运行方法(例如保存日志或检查登录等)

我如何在CodeIgniter中执行此操作?

2 个答案:

答案 0 :(得分:11)

你需要在Codeigniter中使用钩子,这是他们在框架代码的某些点之前实现了所需的运行代码功能的地方。

https://www.codeigniter.com/user_guide/general/hooks.html

有一些内置的钩子允许你在请求期间在不同的点调用方法或类:

pre_system
pre_controller
post_controller_constructor
post_controller
display_override
cache_override
post_system

所以你想要的可能是pre_system或pre_controller。

答案 1 :(得分:3)

查看_remap() function。它允许您在调用普通控制器功能之前重定向到您自己的功能。您可以在控制器中包含自己的_remap功能(从用户指南中复制):

public function _remap($method)
{
    if ($method == 'some_method')
    {
        $this->$method();
    }
    else
    {
        $this->default_method();
    }
}

URI的第二段作为参数传递给_remap函数(在示例中为$method),然后您可以根据需要重定向该过程。