CodeIgniter - Flashdata

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

添加 Flashdata

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

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

  • set_flashdata() 函数也可以使用,它需要两个参数,name 和 value,如下所示。我们也可以传递一个数组。

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

检索 Flashdata

可以使用 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() {
    //加载 session 库
    $this->load->library('session');
    
    //重定向到主页
    $this->load->view('flashdata_home');
    }
    
    public function add() {
    //加载 session 库
    $this->load->library('session');
    $this->load->helper('url');
    
    //添加 flash 数据
    $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 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 数据

单击"单击此处"链接,您将看到如下所示的屏幕。在此屏幕中,您将看到 flash 数据变量的值。再次刷新页面,您将看到如上所示的屏幕,并且 flash 数据变量将自动删除。

添加 Flash 数据