【发布时间】:2018-09-07 06:23:37
【问题描述】:
我试图在同一个控制器中将 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
【问题讨论】:
-
使用
userdata(),而不是flashdata(),我猜$this->input->post('Ucity')中没有数据请在set_userdata()之前检查不为NULL -
@ichadhr 它也不能与 userdata() 一起使用。我通过破坏会话并再次启动它多次尝试了几次。当我将数据重定向到另一个控制器时,我没有得到数据。
-
在重定向之前验证 post 变量不为空,以缩小问题范围。最好也自动加载会话库以缩小其位置作为一个问题,并且它不是很清楚它的加载位置。
-
嘿@Alex 我检查了我的 post 变量并且能够得到它们。我可以将函数 A 存储为 flashdata,但是一旦我重定向到另一个函数 B,它就会丢失其值并显示为 NULL。如果使用重定向,函数 A 中定义的 flashdata 变量将在函数 B 中丢失其值?
标签: codeigniter codeigniter-3 codeigniter-2 codeigniter-session codeigniter-flashdata