如何在CodeIgniter中只为少数控制器而不是所有控制器调用钩子?例如:我想只运行管理部分的钩子。我怎样才能做到这一点?
brjng4g31#
在您希望选择性运行的挂接中,您可以使用$this->ci =& get_instance();访问ci超对象。它充当一个指针,可用于访问CodeIgniter路由器以确定使用$class = $this->ci->router->fetch_class();的类。然后您可以检查$class是否与某个值匹配。这将为您提供:
$this->ci =& get_instance();
$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 */
4ngedf3f2#
你可以简单地通过在钩子中检查你的应用程序的url来完成它:
$hook = false; if(strpos($_SERVER['REQUEST_URI'],"admin/")) $hook = true; if($hook) { // do some hook stuff }
watbbzwu3#
首先,您将在**config/config.php**文件中启用挂接
config/config.php
$config['enable_hooks'] = TRUE;
比打开config/hooks.php文件然后定义挂接
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文件,类似于hooks/hooks.php打开文件在这里,在你希望选择性运行的钩子中,你可以使用$this->ci =& get_instance();访问ci超对象。这作为一个指针,可以用来访问CodeIgniter路由器,以使用$class = $this->ci->router->fetch_class()确定类;。然后,您可以检查$class是否与某个值匹配。这将为您提供:
hooks/hooks.php
$class = $this->ci->router->fetch_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 */
3条答案
按热度按时间brjng4g31#
在您希望选择性运行的挂接中,您可以使用
$this->ci =& get_instance();
访问ci超对象。它充当一个指针,可用于访问CodeIgniter路由器以确定使用$class = $this->ci->router->fetch_class();
的类。然后您可以检查$class
是否与某个值匹配。这将为您提供:4ngedf3f2#
你可以简单地通过在钩子中检查你的应用程序的url来完成它:
watbbzwu3#
首先,您将在**
config/config.php
**文件中启用挂接比打开
config/hooks.php
文件然后定义挂接
然后在Hooks文件夹中创建hooks文件,类似于
hooks/hooks.php
打开文件在这里,在你希望选择性运行的钩子中,你可以使用
$this->ci =& get_instance();
访问ci超对象。这作为一个指针,可以用来访问CodeIgniter路由器,以使用$class = $this->ci->router->fetch_class()
确定类;。然后,您可以检查$class是否与某个值匹配。这将为您提供: