Как получить базовый URL в хуке pre_controller в codeigniter - PullRequest
0 голосов
/ 08 апреля 2019

Я работаю над файлом ловушек, я использую pre_controller функцию ловушки, но когда я попытался использовать в ней функцию base_url(), она не работает для меня, она выдаёт мне эту ошибку Call to undefined function base_url(), можетКто-нибудь, пожалуйста, помогите мне решить эту ошибку?здесь я добавил всю свою функцию

$hook['pre_controller'] = function()
{
    $this->CI = get_instance();
    $ci =& get_instance();
    $router =& load_class('Router', 'core','uri','url');
    $controller_name = $router->fetch_class();  
    $action_name = $router->fetch_method();  
    $segement = $router->uri->segment(2);
    echo base_url(); die;
    try {   
        $rc = new ReflectionClass($controller_name);
    } catch (Exception $ex) {
        if($segement == "") {
            echo base_url(); die;
            //header("Location:".$controller_name.'/overview');
            //redirect($controller_name.'/overview');
            //exit;
        }
    }  
};

Ответы [ 2 ]

1 голос
/ 08 апреля 2019

Это не будет работать, потому что base_url() инициализируется, если загружен контроллер.И pre_controller в основном означает обратное.

Для вас есть два варианта

Опция 1

создать PreControllerHook.php в вашем application/hooks/ directory.

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

Настройте hooks.php config

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

Option 2

создайте PostControllerConstructorHook.php в вашем application/hooks/ directory.

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

Настройте hooks.php config

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

Более подробную информацию вы можете найти на их официальной странице документации здесь .

0 голосов
/ 08 апреля 2019

Я надеюсь, что это сработает для вас

Функция base_url () не работает в codeigniter

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...