【问题标题】:Run a method before any other method in a CodeIgniter controller在 CodeIgniter 控制器中的任何其他方法之前运行一个方法
【发布时间】:2013-07-21 07:28:54
【问题描述】:

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

如何在 CodeIgniter 中做到这一点?

【问题讨论】:

  • 你不知道怎么做不代表不可能
  • 我一直称赞 CodeIgniter 的可爱文档集。不是您的标准 API,但 Hooks 在那里得到了很好的描述。

标签: php codeigniter


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-13
      • 1970-01-01
      • 2019-07-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-08
      • 1970-01-01
      相关资源
      最近更新 更多