Codeigniter-flashdata
提供:Dev Guides
CodeIgniter-Flashdata
Webアプリケーションの構築中に、データを一度だけ保存する必要があり、その後そのデータを削除する必要があります。 たとえば、エラーメッセージまたは情報メッセージを表示する場合。 PHPでは、手動で行う必要がありますが、CodeIgniterによりこの作業が簡単になりました。 CodeIgniterでは、flashdataは次のリクエストまでしか使用できず、自動的に削除されます。
Flashdataを追加
以下に示すように、単にフラッシュデータを保存できます。
$this->session->mark_as_flash('item');
- * mark_as_flash()*関数はこの目的で使用され、保存される値の引数を1つだけ取ります。 配列を渡して複数の値を保存することもできます。
- * set_flashdata()*関数も使用できます。これは、以下に示すように、名前と値の2つの引数を取ります。 配列を渡すこともできます。
$this->session->set_flashdata('item','value');
Flashdataを取得する
Flashdataは、以下に示すように、フェッチするアイテムの1つの引数を取る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にアクセスすると、次のような画面が表示されます。
「ここをクリック」リンクをクリックすると、次のような画面が表示されます。 この画面では、フラッシュデータ変数の値が表示されます。 ページを再度更新すると、上記のような画面が表示され、フラッシュデータ変数が自動的に削除されます。