Как объявить глобальную переменную в CodeIgniter 2.2? - PullRequest
1 голос
/ 31 августа 2011

У меня в CodeIgniter есть такой контроллер

class C extends CI_controller {

    public function A()
    {
        var $data;
    }

    public function B(){
        //here i need to access the variable $data;

    }
}

Как это сделать в CodeIgniter?Я могу использовать сеанс.Действительно ли полезно назначать эту переменную в сеансе?Есть ли лучший способ объявить глобальные переменные?

я использовал, как это, но не работает у

class C extends CI_controller {

        public $data;              
        public function A()
        {
            $this->data=1;
        }

        public function B(){
            //here $this->data showing null value y

        }
    }

Ответы [ 4 ]

3 голосов
/ 31 августа 2011

Глобальные переменные существуют только в течение срока действия запроса.Поскольку для одного запроса в контроллере выполняется только одна функция (или вы делаете это неправильно!), Глобальные переменные работать не будут.

Вы должны поместить ее в сеанс или в базу данных.

2 голосов
/ 31 августа 2011

Использовать Помощник сеанса CI :

class C extends CI_controller {

    public function A()
    {
        $this->load->library('session');
        $data = array('data'=>$data); //set it
        $this->session->set_userdata($data);
    }

    public function B(){
        $this->load->library('session');
        $this->session->userdata('data'); //access it
    }
}
1 голос
/ 31 августа 2011

Вы должны попытаться установить некоторые переменные в файле конфигурации, а затем просто включить этот файл в конструктор контроллеров, и вы можете получить доступ к этим переменным из любого представления ... http://codeigniter.com/user_guide/libraries/config.html

0 голосов
/ 03 сентября 2011

2-й блок кода, который у вас есть, не будет работать, если у вас есть такой сценарий: введите страницу C / A, затем введите C / B.Когда страница будет готова, вы не сможете использовать значения, которые вы сохранили в глобальных переменных.

Попробуйте использовать сеансы или флэш-данные.Flash-данные аналогичны сеансу за исключением того, что они исчезают после вызова следующей страницы.

Вот страница CI для сеансов и флэш-данные для справки: http://codeigniter.com/user_guide/libraries/sessions.html

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