如何在Codeigniter中的pre_controller挂钩中获取基本URL

时间:2019-04-08 05:49:56

标签: codeigniter codeigniter-3

我正在处理钩子文件,我正在使用钩子的pre_controller函数,但是当我尝试在其中使用base_url()函数时,它对我不起作用,它给了我这个错误{ {1}},任何人都可以帮助我解决此错误吗?在这里,我已经添加了整个功能

Call to undefined function base_url()

2 个答案:

答案 0 :(得分:1)

这将不起作用,因为如果加载了控制器,base_url()将被初始化。 而pre_controller基本上是相反的意思。

有两种选择

选项1

在您的application/hooks/目录中创建一个PreControllerHook.php。

class PreControllerHook extends CI_Controller
{
    public function initialize()
    {
        $controller_name = $this->router->fetch_class();  
        //... and so on
    }
}

设置您的hooks.php配置

$hook['pre_controller'] = [
    [
        'class' => 'PreControllerHook',
        'function' => 'initialize',
        'filename' => 'PreControllerHook.php',
        'filepath' => 'hooks'
    [
];

选项2

在您的application/hooks/目录中创建一个PostControllerConstructorHook.php。

class PostControllerConstructorHook
{
    public function initialize()
    {
        $ci = get_instance();
        $controller_name = $ci->router->fetch_class();  
        //... and so on
    }
}

设置您的hooks.php配置

$hook['post_controller_constructor'] = [
    [
        'class' => 'PostControllerConstructorHook',
        'function' => 'initialize',
        'filename' => 'PostControllerConstructorHook.php',
        'filepath' => 'hooks'
    [
];
  

您可以在其官方文档页面here中找到更多信息。

答案 1 :(得分:0)