4

我是 codeigniter 的新手,我正在创建一个在其中创建和管理用户的项目。在这里,我使用 flashdata 来显示临时消息,如“用户创建”等,

我设置闪存数据的代码是

       $this->session->set_flashdata('message', 'User Created.'); 

在我看来,我称之为

$this->session->flashdata('message'); 

我的问题是,当创建用户时,会显示 flashdata,当我单击主页链接时,flash 数据仍然可用,但是当我再次单击刷新/主页时,它会消失。我希望在我第一次单击主页链接时将其清除。有没有办法编码??

4

7 回答 7

5

Flashdata 将仅可用于下一个服务器请求,然后自动清除。

if($user_created)
{
    $this->session->set_flashdata('success', 'User created!');
    redirect('login');
}
else
{
    redirect('register');
}
于 2013-09-04T10:48:56.350 回答
3

如果你想清除控制器其他视图文件中的 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']);
}
于 2016-08-22T05:40:47.197 回答
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');
}

通常开发人员在向同一页面提交数据时会出错。他们设置闪存数据但忘记重定向。

于 2014-03-01T17:43:10.643 回答
1

您可以使用 Ajax 框架来自动隐藏 flash 消息。它们还包含所有 flash 操作。

您可以从这里获得更多信息。 https://github.com/EllisLab/CodeIgniter/wiki/Ajax-Framework-For-CodeIgniter

于 2014-04-16T08:39:50.483 回答
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>
于 2013-09-04T10:38:30.683 回答
1

你应该redirectuser created. 然后next time点击的home link时候就不会出现了,试试这个,

$this->session->set_flashdata('message', 'User Created.'); 
redirect(base_url().'home.php');// you can change accordingly
于 2013-09-04T10:41:48.267 回答
0

如果没有其他帮助,只需扩展 Session 库并添加 clear_flashdata 函数。

<?php defined('BASEPATH') or exit('No direct script access allowed');

// application/libraries/Session/MY_Session.php
class MY_Session extends CI_Session
{

    public function __construct(array $params = array())
    {
        parent::__construct($params);
    }


    /**
     * Clear flashdata
     *
     * Legacy CI_Session compatibility method
     *
     * @param   mixed   $data   Session data key or an associative array
     * @return  void
     */
    public function clear_flashdata($data)
    {
        $this->set_userdata($data, null);
    }
}
于 2021-11-15T09:46:30.200 回答