在CakePHP中,我们有beforeFilter
和afterFilter
在任何控制器方法之前或之后运行方法(例如保存日志或检查登录等)
如何在CodeIgniter中执行此操作?
您将希望利用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的东西。
查看_remap()函数。它允许您在调用正常控制器函数之前重定向到自己的函数。您可以在控制器中包含自己的_remap功能,如下所示(复制自《用户指南》):
public function _remap($method)
{
if ($method == 'some_method')
{
$this->$method();
}
else
{
$this->default_method();
}
}
URI的第二段作为参数传递给_remap
函数(在示例中为$method
),然后您可以根据需要重定向进程。