Почему значение Flashdata обнуляется при перенаправлении на другую функцию в Codeigniter? - PullRequest
0 голосов
/ 11 сентября 2018

Я пытаюсь получить входные значения из представления в контроллер и сохраняю это значение как флэш-данные, чтобы использовать его в другом контроллере.Теперь я могу хранить значение до тех пор, пока не перенаправлюсь, но как только он перейдет к перенаправлению, он потеряет свое значение.Я не уверен, что здесь происходит.

  • Нужно ли мне снова просматривать мой конфиг?Если да, то что мне нужно увидеть?
  • Мои обе функции являются правами, но если я что-то упускаю?

Вот мой код ниже: -

Controller.php

public function first() { 
 $testing = $this->input->post('fname');
 $this->session->set_flashdata('fstname', $testing);
 $this->session->keep_flashdata('fstname');
 // echo $this->session->flashdata('fstname'); //able to get the flashdata value till here. 
 redirect('Home/second/'); //but when I am using this, flashdata loses its value
}

public function second() { 
 $data['getfname'] = $this->session->flashdata('fstname');
 $this->load->view('details', $data);
}

Просмотр (details.php)

 <?php echo $getfname ?>

Выход

Нуль

config.php

$config['sess_driver'] = 'files'; 
$config['sess_cookie_name'] = 'ci_session'; 
$config['sess_expiration'] = 7200; 
$config['sess_save_path'] = APPPATH . 'cache/sessions/'; 
$config['sess_match_ip'] = FALSE; 
$config['sess_time_to_update'] = 300; 
$config['sess_regenerate_destroy'] = FALSE;

autoload.php

$autoload['libraries']=array();

Кроме того, я также попытался использовать userdata (), но он не отображается во второй функции после перенаправления.

Спасибо за ваше время.

1 Ответ

0 голосов
/ 11 сентября 2018

Первое:

проверить, не являются ли данные сообщения пустыми

$testing = $this->input->post('fname');
var_dump($testing);
exit;

Второе:

вы можете пропустить keep_flashdata, в этом контексте вам это не нужно

Третий:

Проверьте настройку сеанса в config.php, например:

$config['sess_driver']          = 'database';
$config['sess_cookie_name']        = 'mysession';
$config['sess_expiration']         = 86400;
$config['sess_save_path']          = 'sessions';
$config['sess_match_ip']           = TRUE;
$config['sess_time_to_update']     = 300;
$config['sess_regenerate_destroy'] = TRUE;

, проверьте autload.php: $autoload['libraries'] = array('session', [...]);

Четвертый:

проверьте сессию flash var напрямую:

$strFstname = $this->session->flashdata('fstname');
die($strFstname);

Ваш код должен работать, я много раз использовал flashdata.

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