хуки codeigniter не могут заставить работать объект $ ci - PullRequest
1 голос
/ 09 декабря 2011

Я только сегодня начал смотреть на хуки, не на 100% уверенный в том, что я делаю неправильно, но я получаю сообщение об ошибке, когда пытаюсь использовать объект $ ci в своей функции.

Произошла ошибка PHP Серьезность: Уведомление Сообщение: попытка получить свойство необъекта Имя файла: hooks / language.php Номер строки: 12

Мой файл хуков выглядит так. Он находится в каталоге hooks в папке моего приложения.

class Language{

    var $ci;

    public function __construct(){
       $this->ci =& get_instance();
    }

    function get_language(){
        echo $this->ci->session->userdata('language');
    }
}

Мне нужно получить значение в сеансе для использования в моей функции. Разве я не должен делать это так?

Спасибо тебе!

Ответы [ 4 ]

2 голосов
/ 09 декабря 2011

В файле Base4 / 5.php написана функция get_instance (), и она загружается условно, поэтому она не будет присутствовать до тех пор, пока не будет загружена.И это причина, по которой он дает ошибку.

0 голосов
/ 18 сентября 2014

Ниже приведено приложение по умолчанию / config / hooks.php

    // Stores the requested URL, which will sometimes be different than previous url 
$hook['post_controller'][] = array(
                                'class'     => 'App_hooks',
                                'function'  => 'save_requested',
                                'filename'  => 'App_hooks.php',
                                'filepath'  => 'hooks',
                                'params'    => ''
                            );

// Allows us to perform good redirects to previous pages.
$hook['post_controller'][] = array(
                                'class'     => 'App_hooks',
                                'function'  => 'prep_redirect',
                                'filename'  => 'App_hooks.php',
                                'filepath'  => 'hooks',
                                'params'    => ''
                            );

// Maintenance Mode
$hook['post_controller_constructor'][] = array(
                                'class'     => 'App_hooks',
                                'function'  => 'check_site_status',
                                'filename'  => 'App_hooks.php',
                                'filepath'  => 'hooks',
                                'params'    => ''
                            );

/* End of file hooks.php */
/* Location: ./application/config/hooks.php */

Я изменил его ниже, и он прекрасно работает для меня

 // Stores the requested URL, which will sometimes be different than previous url 
$hook['post_controller_constructor'][] = array(
                                'class'     => 'App_hooks',
                                'function'  => 'save_requested',
                                'filename'  => 'App_hooks.php',
                                'filepath'  => 'hooks',
                                'params'    => ''
                            );

// Allows us to perform good redirects to previous pages.
$hook['post_controller'][] = array(
                                'class'     => 'App_hooks',
                                'function'  => 'prep_redirect',
                                'filename'  => 'App_hooks.php',
                                'filepath'  => 'hooks',
                                'params'    => ''
                            );

// Maintenance Mode
$hook['post_controller'][] = array(
                                'class'     => 'App_hooks',
                                'function'  => 'check_site_status',
                                'filename'  => 'App_hooks.php',
                                'filepath'  => 'hooks',
                                'params'    => ''
                            );

/* End of file hooks.php */
/* Location: ./application/config/hooks.php */
0 голосов
/ 17 сентября 2012

Я использовал post_controller_constructor для своего крючка, затем CI работал. И мне пришлось включить хуки в конфиге.

0 голосов
/ 09 декабря 2011

Только что сделал еще один поиск в Google, и кажется, что зацепка, которую я использовал в Pre Controller, была еще до создания объекта, я изменил зацепку, и теперь она работает нормально.

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