在这里,我试图仅在一个Controller上定义挂钩。我怎么设置它们?
我将钩子定义为$hook['pre_controller']=arra('....')
。但它显示在所有控制器上,我想在Home Controller上定义钩子。建议我。
答案 0 :(得分:0)
例如,您的控制器名称为YourController
,第一步是在hooks.php
文件下定义您的挂钩,
// hooks.php
$hook['pre_controller'][] = array(
'class' => 'MyHook',
'function' => 'HookMethod',
'filename' => 'MyHook.php',
'filepath' => 'hooks',
'params' => array()
);
在MyHook.php
文件夹下定义hooks
,如下所示。
<?php
// MyHook.php
class MyHook
{
private $CI;
public function __construct()
{
$this->CI = & get_instance();
}
public function HookMethod()
{
// check here loaded controller is desired one
if (is_subclass_of($this->CI, 'YourController')) {
// write your desired code here.
}
}
}
我没有测试过代码,但这肯定会对你有所帮助。
答案 1 :(得分:0)
你可以试试这个。它工作正常
<强>配置/ hooks.php 强>
$hook['test'] = array(
'class' => 'Exm',
'function' => 'tut',
'filename' => 'exm.php',
'filepath' => 'hooks',
);
<强>应用/钩/ exm.php 强>
class Exm extends CI_Hooks {
public function tut()
{
echo "Welcome to Hooks File";
}
}
<强>应用/控制器/使用example.php 强>
defined('BASEPATH') OR exit('No direct script access allowed');
class Example extends CI_Controller {
public function index()
{
echo "Hooks Example";
$this->hooks->call_hook('test');
}
}