バニラPHPでフラッシュデータ(フラッシュメッセージ)機能を実装する方法
PHPフレームワークのCodeIgniterを勉強していた際にページ遷移好みに表示され、リロードしても表示されないというフラッシュデータ機能が便利だなと思った。同じ機能を実装できるライブラリもあるが、今回はバニラPHPにてこの機能を実装してみたい。以下に実装方法をメモ。
やりたいこと
- 何らかの処理後に当該処理の成否を元にフラッシュデータを作成し、処理完了ページに遷移
- 処理完了ページでフラッシュデータを表示
ソースコード
何らかの処理ページ
<?php
session_start();
//何らかの処理をした後に$flgに成否をboolで格納
$flg = false;
//$flgによってclassとメッセージを変更
$class = ($flg) ? 'success' : 'error';
$msg = ($flg) ? '処理成功しました。' : 'エラーが発生しました。';
//セッションにデータを格納
$_SESSION['flash'][$class] = $msg;
//ページ遷移
header('Location: ./complete.php');
exit;
処理完了ページ
<?php
session_start();
//変数にセッションを格納
$flash = isset($_SESSION['flash']) ? $_SESSION['flash'] : array();
//セッションを削除
unset($_SESSION['flash']);
//フラッシュメッセージが存在する場合は出力
if( !empty($flash) ){
foreach( (array)$flash as $key => $val ){
echo '<div class="' . $key . '">' . $val . '</div>';
}
}
ブラウザから実行すると以下のような形で出力される筈。
<div class="error">エラーが発生しました。</div>
所感
先日メモしたjQueryプラグインの「Toastr」と相性が良さそう。
尚、PHPでのフラッシュデータライブラリだと「flasher」と「simple-flash」あたりを試してみたいところ。
参考サイト
関連記事
-
-
PHPで数字をゼロパディング(ゼロ埋め)する方法
PHPで予め桁数を決めておいて、桁数未満の場合は0で埋めたい場合の対応方法をメモ ...
-
-
MySQLで直近に挿入したオートインクリメントの値と次回挿入する値を取得する方法
phpとmysqliを使っている中で次回挿入するオートインクリメントの値と、前回 ...
-
-
PHPで配列に特定の値が入っているか検索
PHPで配列に特定の値が入っているか検索して trueかfalseを返したい、と ...
-
-
PHPにて短縮URLを展開させて、元のURLを取得する方法
短縮されたURLを展開させて、元のURLを取得したいというケースがあった。方法を ...
-
-
PHPで簡単にCSVファイルの生成
簡単にデータ並べるだけのCSVファイル生成。 file_put_contensで ...