【问题标题】:Hooks in CodeigniterCodeigniter 中的钩子
【发布时间】:2014-07-11 10:10:42
【问题描述】:

如何在 CodeIgniter 中只为几个控制器而不是所有控制器调用钩子?

例如:我只想为管理部分运行挂钩。我怎样才能做到这一点?

【问题讨论】:

标签: codeigniter hook


【解决方案1】:

在您希望有选择地运行的钩子中,您可以使用$this->ci =& get_instance(); 访问 ci 超级对象。这充当一个指针,可用于访问 CodeIgniter 路由器以确定使用$class = $this->ci->router->fetch_class(); 的类。然后您可以检查$class 是否与某个值匹配。这会给你:

<?php class Post_controller_constructor {
    var $ci;

    function __construct() {

    }

    function index()
    {
        $this->ci =& get_instance();
        $class = $this->ci->router->fetch_class();
        if($class === 'admin') {
            // Hook procedures
        }
    }
}

/* End of file post_controller_constructor.php */
/* Location: ./application/hooks/post_controller_constructor.php */

【讨论】:

    【解决方案2】:

    你可以简单地通过在你的钩子中检查你的应用程序的 url 来做到这一点:

    $hook = false;
    if(strpos($_SERVER['REQUEST_URI'],"admin/"))
    $hook = true;
    if($hook) {
    // do some hook stuff
    }
    

    【讨论】:

      【解决方案3】:

      首先您将在 config/config.php 文件中启用 Hooks

      $config['enable_hooks'] = TRUE;
      

      比打开config/hooks.php文件

      比定义钩子

      $hook['post_controller_constructor']  = array(  
          'class'     => 'Post_controller_constructor',      // Class Name
         'function'  => 'check_status',     // Function Name
         'filename'  => 'Post_controller_constructor',   // File Name in Hook Folder
         'filepath'  => 'hooks'       // Controller Path
      );
      

      比在钩子文件夹中创建钩子文件,如hooks/hooks.php 打开文件

      这里, 在您希望有选择地运行的钩子中,您可以使用$this-&gt;ci =&amp; get_instance(); 访问 ci 超级对象。这充当一个指针,可用于访问 CodeIgniter 路由器以确定使用 $class = $this-&gt;ci-&gt;router-&gt;fetch_class(); 的类。然后,您可以检查 $class 是否与某个值匹配。这会给你:

      <?php class Post_controller_constructor {
          var $ci;
      
          function __construct() {
      
          }
      
          function check_status()
          {
              $this->ci =& get_instance();
              $class = $this->ci->router->fetch_class();
              if($class === 'admin') {
                  // Hook procedures
              }
          }
      }
      
      /* End of file post_controller_constructor.php */
      /* Location: ./application/hooks/post_controller_constructor.php */
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-12
        • 1970-01-01
        • 1970-01-01
        • 2011-05-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多