Как получить доступ к сеансу в другом методе codeigniter? - PullRequest
0 голосов
/ 16 августа 2011

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

Я загрузил библиотеку в свой класс конструктора:

$this->load->library('session');

1-я функция:

public function display()
{
$data = array(
'word' => 'hello'
);
$this->session->set_userdata($data);
}

2-я функция:

public function validate()
{
$word_generated = $this->session->userdata('word');
}

Но я не могу получить доступ к значению сеанса во втором методе.

Код работает нормально, если я получаю доступ к сеансу внутритот же метод:

public function display()
{
$data = array(
'word' => 'hello'
);
$this->session->set_userdata($data);
$word_generated = $this->session->userdata('word');
}

Я не могу получить к нему доступ во втором методе?Пожалуйста, руководство .. Большое спасибо

Ответы [ 2 ]

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

Чтобы получить доступ к данным сеанса от метода к методу (или от страницы к странице), необходимо выполнить перенаправление.

Например:

public function display() {
    $data = array(
        'word' => 'hello'
    );
    $this->session->set_userdata($data);
    redirect('your_controller/validate');
 }

 public function validate() {
     $word_generated = $this->session->userdata('word');
 }

Если вы просто пытаетесь совместно использовать переменную с двумя методами в одном контроллере при одном и том же вызове, у вас есть две опции:

1.Установите публичное свойство для вашего класса контроллера:

class Your_controller extends CI_Controller {
    public $word;
    public function display() {
       $this->word = 'hello';
       $this->validate();
    }

    public function validate() {
       $word_generated = $this->word;
    }
}

2.Просто передайте переменную методу, как обычно:

class Your_controller extends CI_Controller {
    public $word;
    public function display() {
       $this->validate('hello');
    }

    public function validate($word='') {
       $word_generated = $word;
    }
}

Надеюсь, что вам это поможет.

0 голосов
/ 17 августа 2011

Используя CI 1.7.x, я обнаружил ошибку в своем веб-приложении, когда оно просто перестало читать мои session_data. Чтобы исправить это, я изменил $ config ['sess_encrypt_cookie'] в config.php на TRUE; и это снова заработало. Конечно, в файлах журнала постоянно появлялась ошибка повреждения cookie ...

Надеюсь, это поможет

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