我正在尝试从 View 获取输入值到 Controller 并将此值保存为闪存数据以在另一个 Controller 中使用它。现在我可以存储值直到我重定向,但是一旦重定向,它就失去了它的值(value)。我不确定这里发生了什么。
- 我需要再次查看我的配置吗?如果是,那么我需要看什么?
- 我的两个功能都是正确的,但如果我遗漏了什么?
下面是我的代码:-
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() 但它在重定向后没有显示在第二个函数上。
感谢您的宝贵时间。
请您参考如下方法:
首先:
检查Post数据是否不为空
$testing = $this->input->post('fname');
var_dump($testing);
exit;
第二个:
你可以跳过 keep_flashdata,在那种情况下你不需要它
第三:
例如检查 config.php
中的 session 设置:
$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', [...]);
第四:
直接检查 session 闪存变量:
$strFstname = $this->session->flashdata('fstname');
die($strFstname);
你的代码应该可以工作,我多次使用这样的 flashdata。