CodeIgniter - 闪存数据



在构建web应用程序时,我们需要存储一些仅使用一次的数据,之后需要删除这些数据。例如,显示一些错误消息或信息消息。在PHP中,我们必须手动执行此操作,但CodeIgniter使这项工作变得简单。在CodeIgniter中,闪存数据只在下一个请求之前可用,之后会自动删除。

添加闪存数据

我们可以简单地如下所示存储闪存数据。

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

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

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

检索闪存数据

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

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

如果您不传递任何参数,则可以使用相同的函数获取一个数组。

示例

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

<?php 
   class FlashData_Controller extends CI_Controller {
	
      public function index() { 
         //Load session library 
         $this->load->library('session');
			
         //redirect to home page 
         $this->load->view('flashdata_home'); 
      } 
  
      public function add() { 
         //Load session library 
         $this->load->library('session'); 
         $this->load->helper('url'); 
   
         //add flash data 
         $this->session->set_flashdata('item','item-value'); 
   
         //redirect to home page 
         redirect('flashdata'); 
      } 
   } 
?>

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

<!DOCTYPE html> 
<html lang = "en">
 
   <head> 
      <meta charset = "utf-8"> 
      <title>CodeIgniter Flashdata Example</title> 
   </head>
	
   <body> 
      Flash Data Example 
      <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目录下的routes.php文件,并在文件末尾添加以下行。

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

访问以下链接执行上述示例。将yoursite.com替换为您的网站URL。

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

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

Flash Data

点击“点击此处”链接,您将看到如下所示的屏幕。在此屏幕上,您将看到闪存数据变量的值。再次刷新页面,您将看到上面的屏幕,闪存数据变量将自动删除。

Add Flash Data
广告