CodeIgniter 闪存数据


在构建网络应用程序时,我们需要将一些数据只保存一次,之后我们要删除这些数据,例如要显示一些错误信息或信息消息。

在PHP中,我们必须手动操作,但是CodeIgniter让我们的工作变得简单,在CodeIgniter中,flashdata只在下次请求前可用,并且会自动删除。

添加闪存数据


我们可以简单地保存 flashdata,如下所示。

$this->session->mark_as_flash('item');
  • mark_as_flash()函数用于此目的,它只需要保存值的一个参数。我们还可以传递一个数组来保存多个值。

  • set_flashdata()也可以使用函数,它接受两个参数,名称和值,如下所示。我们也可以传递一个数组。

$this->session->set_flashdata('item','value');

检索闪存数据


可以使用 flashdata() 函数检索 Flashdata,该函数采用要获取的项目的一个参数,如下所示,flashdata() 函数确保你只获取闪存数据而不是任何其他数据。

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

如果你不传递任何参数,那么你可以用同样的函数得到一个数组。

创建一个名为FlashData_Controller.php的类,并将其保存在application/controller/FlashData_Controller.php

<?php 
    class FlashData_Controller extends CI_Controller {
	
        public function index() {
            // 加载会话库
            $this->load->library('session');
			
            // 重定向到首页
            $this->load->view('flashdata_home');
        }
  
        public function add() {
            // 加载会话库
            $this->load->library('session');
            $this->load->helper('url');
   
            // 添加闪存数据
            $this->session->set_flashdata('item','item-value');
   
            // 重定向到首页
            redirect('flashdata');
        }
    }
?>

创建一个名为flashdata_home.php的视图文件,并将其保存在application/views/ flashdata_home.php。

<!DOCTYPE html> 
<html lang = "en">
 
    <head>
        <meta charset = "utf-8">
        <title>CodeIgniter Flashdata 例子</title>
    </head>
	
    <body>
        Flash Data 例子
        <h2><?php echo $this->session->flashdata('item'); ?></h2>
        <a href = 'flashdata/add'>Click Here</a> to add flash data.
    </body>
	
</html>

修改application/config/routes.php文件,并在文件末尾添加以下一行。

$route['flashdata'] = 'FlashData_Controller'; 
$route['flashdata/add'] = 'FlashData_Controller/add';

将 yoursite.com 替换为你站点的域名,在浏览器中访问以下链接执行上述示例。

http:// yoursite.com/index.php/flashdata

访问上述 URL 后,你将看到如下所示的屏幕。

Flash Data

点击"Click Here",你将看到如下所示的屏幕。在此屏幕中,你将看到闪存数据变量的值。再次刷新页面,你将看到如上所示的屏幕,Flash 数据变量将被自动删除。

Add Flash Data