我正在使用Codeigniter 2.1.4,我遇到了flashdata的一些问题。
当我成功提交记录时,我可以显示flashdata消息。但是,如果从显示flashdata消息的页面转到另一页,然后使用浏览器后退按钮返回上一页,则会再次显示flashdata消息。
如何在使用后清除flashdata消息?
我认为它不是flashdata发出缓存问题。我很困惑为什么会这样。 如果其缓存问题然后如何删除它?
以下是我用过的代码,
//In the manage of controller
$this->session->set_flashdata('message', "Record updated successfully.");
// In the view of controller
$data['message'] = $this->session->flashdata('message');
// In the view page
echo $message;
答案 0 :(得分:4)
您在控制器中的代码是正确的
//In the manage of controller
$this->session->set_flashdata('message', "Record updated successfully.");
redirect('controller_name/function_name','refresh');
现在可以像这样使用
if($this->session->flashdata('message')){echo $this->session->flashdata('message');}
希望它能运作
答案 1 :(得分:3)
Flash仅在下次刷新后消失
答案 2 :(得分:1)
如果要清除控制器或其他视图文件中的set_flash,则可以使用此简单代码。
$this->session->set_flashdata('error', 'User not found...'); //create set_flash
销毁 set_flash
//echo "<pre>"; print_r($_SESSION); die; //for check
if(isset($_SESSION['error'])){
unset($_SESSION['error']);
}
答案 3 :(得分:0)
$this->session->set_flashdata('message', "Record updated successfully.");
答案 4 :(得分:0)
您必须在 $this->session->set_flash('item','value');
实施例:
if ($this->form_validation->run() == FALSE){
$this->session->set_flashdata('error',validation_errors());
redirect(base_url().'user/login');
}
else{
$this->session->set_flashdata('success','Thank you');
redirect(base_url().'user/login');
}
通常,开发人员在向同一页面提交数据时会出错。他们设置了闪存数据,但忘了重定向。
答案 5 :(得分:0)
如果您使用相同的控制器功能刷新,则不会删除flashdata。在浏览器中来回移动也不会影响flashdata。 清除flashdata重定向到另一个控制器功能,它将工作。
答案 6 :(得分:0)
由于代码点火器不提供破坏 flashdata 的可能性,您可以通过第二次虚构调用 flashdata 函数而不使用 echo 来解决此问题:
if ($this->session->flashdata('message')) :
echo $this->session->flashdata('message'); // First normal call
$this->session->flashdata('message'); // Second fictitious call
endif;