Hooks in Codeigniter

前端 未结 3 1943
深忆病人
深忆病人 2021-01-18 18:40

How can I call a hook for only a few controllers instead of all controllers in CodeIgniter?

E.g.: I want to run the hook for only the admin section. How can I achiev

3条回答
  •  無奈伤痛
    2021-01-18 19:20

    First you will Enable Hooks in config/config.php File

    $config['enable_hooks'] = TRUE;
    

    Than Open config/hooks.php File

    Than Define Hooks

    $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
    );
    

    Than create hooks file in Hooks Folder Like hooks/hooks.php open File

    Here, In the hook which you wish to run selectively, you can access the ci superobject using $this->ci =& get_instance();. This acts as a pointer which can be used to access the CodeIgniter router to determine the class using $class = $this->ci->router->fetch_class();. You can then check if $class matches a certain value. This would give you:

    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 */
    

提交回复
热议问题