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