codeigniter - 无法将 flashdata 或 userdata 值传递给另一个函数
问题描述
我试图在同一个控制器中将 flashdata 和 userdata 的值从一个函数获取到另一个函数。似乎我在 func A 中使用重定向到 func B。所以当 func 加载时,它不会读取值并变为 Null。我使用了 var_dump() 和 print_r 但值为空。请找到我的示例代码如下: -
控制器:Sample.php
我已经在开始时声明了会话库
$this->load->library('session');
尝试使用时$this->session->userdata
public function A {
$city = $this->input->post('Ucity');
$depart = $this->input->post('Udepartment');
$this->session->set_userdata('City',$city);
$this->session->set_userdata('Department',$depart);
//I guess the issue is coming overhere. When it redirects, it loses its values
redirect ('/Sample/B/');
}
public function B {
$getCity = $this->session->userdata('City');
$getDept = $this->session->userdata('Department');
if(isset($getCity)) {
$data['ct'] = $getCity;
$data['dt'] = $getDept;
$this->load->view(header);
$this->load->view(menu);
$this->load->view(fetchEmp, $data);
$this->load->view(footer);
}
else {
var_dump($getCity);
print_r($getCity);
}
}
尝试使用时$this->session->flashdata
public function A {
$city = $this->input->post('Ucity');
$depart = $this->input->post('Udepartment');
$this->session->set_flashdata('City',$city);
$this->session->set_flashdata('Department',$depart);
$this->session->keep_flashdata('City');
$this->session->keep_flashdata('Department');
//I guess the issue is coming overhere. When it redirects, it loses its values
redirect ('/Sample/B/');
}
public function B {
$getCity = $this->session->flashdata('City');
$getDept = $this->session->flashdata('Department');
if(isset($getCity)) {
$data['ct'] = $getCity;
$data['dt'] = $getDept;
$this->load->view(header);
$this->load->view(menu);
$this->load->view(fetchEmp, $data);
$this->load->view(footer);
}
}
还有我的 fetchEmp.php(查看)
<h1>City: <?php echo $ct .'and department: ' . $dt ?></h1>
我得到的输出是:NULL
解决方案
这很简单。Flashdata 只会存储您的价值一次。如果刷新页面,它将丢失数据。如果你不打算使用 flashdata,你可以使用它,如果你稍后会使用,那么只需使用 userdata()。
第 1 步:转到第 314 行的 Session.php(在 Systems/Library/Session 中),其中显示:
ini_set('session.use_trans_sid',0);
使用 // 注释此行
现在在同一个文件中转到第 143 行,其中显示:
session_start();
也评论这一行。
现在打开你的控制器文件并在第一行写下这一行:
session_start();
这必须是您的 controller.php 文件中的第一件事。
这个对我有用。
推荐阅读
- ios - Swift - UICollectionViewDataSourcePrefetching 忽略一个部分
- php - 如何缩小 MySQL 结果以提高 PHP 效率?
- javascript - JSP/Spring MVC - 如何使用添加到模型的元素动态填充列表(javascript/jQuery)
- c - 将内容从 argv[] 复制到 char* 时出现分段错误
- python - 最大 LMDB 值大小
- shell - 破折号中的无声“阅读”
- django - Django Admin - 如何从外键嵌入视图
- javascript - TypeScript:有没有办法使用枚举以编程方式构造接口
- c++ - cmake 命令行 - 传递 var 取决于构建类型
- python - 如何在两个正则表达式模式python之间获取纯文本