请查看以下代码:
$this->session->set_flashdata('message', 'This is a message.');
var_dump($this->session->flashdata('message'));
返回bool(false)
。
我希望之后 NEED redirect()
可以重新调用,因为有些时候我需要在设置flashdata之后立即调用它一个观点。
修改
$this->session->set_flashdata('message', 'This is a message.');
$this->session->keep_flashdata('message');
var_dump($this->session->flashdata('message'));
不幸的是没有区别。
答案 0 :(得分:29)
嗯,documentation确实说明了
CodeIgniter支持" flashdata"或仅会话数据 可用于下一个服务器请求,然后自动执行 清零。
是第一件事,这显然意味着你需要做一个新的服务器请求。 重定向,刷新,链接或其他一些意思,用于将用户发送到下一个请求。
如果您在同一个请求中使用flashdata,为什么还要使用flashdata?您也可以不使用flashdata或使用常规会话。
答案 1 :(得分:16)
// Set flash data
$this->session->set_flashdata('message_name', 'This is my message');
// After that you need to used redirect function instead of load view such as
redirect("admin/signup");
// Get Flash data on view
$this->session->flashdata('message_name');
答案 2 :(得分:8)
要设置flashdata,您需要重定向控制器功能
$this->session->set_flashdata('message_name', 'This is test message');
//redirect to some function
redirect("controller/function_name");
//echo in view or controller
$this->session->flashdata('message_name');
答案 3 :(得分:5)
在Codeigniter中重定向后显示Flash消息
在您的控制器中设置此
<?php
public function change_password(){
if($this->input->post('submit')){
$change = $this->common_register->change_password();
if($change == true){
$messge = array('message' => 'Password chnage successfully','class' => 'alert alert-success fade in');
$this->session->set_flashdata('item', $messge);
}else{
$messge = array('message' => 'Wrong password enter','class' => 'alert alert-danger fade in');
$this->session->set_flashdata('item',$messge );
}
$this->session->keep_flashdata('item',$messge);
redirect('controllername/methodname','refresh');
}
?>
In Your View File Set this
<script type="application/javascript">
/** After windod Load */
$(window).bind("load", function() {
window.setTimeout(function() {
$(".alert").fadeTo(500, 0).slideUp(500, function(){
$(this).remove();
});
}, 4000);
});
</script>
<?php
if($this->session->flashdata('item')) {
$message = $this->session->flashdata('item');
?>
<div class="<?php echo $message['class'] ?>"><?php echo $message['message']; ?>
</div>
<?php
}
?>
的以下链接
答案 4 :(得分:3)
更改你的config.php:
$config['sess_use_database'] = TRUE;
要:
$config['sess_use_database'] = FALSE;
它对我有用。
答案 5 :(得分:-1)
flash消息将在不可见的控制器中提供。 显示在视图中以获取控制器的动作并通过视图