我是codeigniter的新手,我正在创建一个用户创建和管理的项目。这里我使用flashdata显示临时消息,如“用户创建”等,
设置Flash数据的代码是
$this->session->set_flashdata('message', 'User Created.');
在我看来,我称之为
$this->session->flashdata('message');
我的问题是,当用户创建时,会显示flashdata,当我点击主页链接时,闪存数据仍然可用,但是当我再次单击refresh / home时它会消失。当我第一次点击主页链接时,我希望它被清除。有没有办法对其进行编码?
答案 0 :(得分:4)
Flashdata仅可用于下一个服务器请求,然后自动清除。
if($user_created)
{
$this->session->set_flashdata('success', 'User created!');
redirect('login');
}
else
{
redirect('register');
}
答案 1 :(得分:1)
flashdata应该显示一次。
它会在页面刷新时消失。
因此,如果您将页面重定向到另一个页面,它应该可以正常工作。
如果你不刷新页面,可以通过jQuery来完成。
说你的div显示flash:
<div id="flash-messages">Success Message</div>
写jQuery:
<script type="text/javascript">
$(function(){
$("#flash-messages").click(function(){$(this).hide()});
});
</script>
答案 2 :(得分:1)
redirect
之后你应该user created
。然后当next time
点击home link
时,它将不会显示,请尝试此操作,
$this->session->set_flashdata('message', 'User Created.');
redirect(base_url().'home.php');// you can change accordingly
答案 3 :(得分:1)
您必须在 $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');
}
通常,开发人员在向同一页面提交数据时会出错。他们设置了闪存数据,但忘了重定向。
答案 4 :(得分:1)
您可以使用Ajax框架自动隐藏flash消息。它们也包含所有的flash操作。
您可以从此处获取更多信息。 https://github.com/EllisLab/CodeIgniter/wiki/Ajax-Framework-For-CodeIgniter
答案 5 :(得分: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']);
}