3

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

如何在 CodeIgniter 中做到这一点?

4

2 回答 2

12

您将需要使用 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 之类的东西。

于 2013-07-21T07:34:22.247 回答
4

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

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

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

于 2013-07-21T07:35:16.060 回答