バニラ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ページングテンプレ
使いやすいのがあったのでメモ。 $page ...
-
PHPで「php-qrcode-detector-decoder」ライブラリを使用してQRコードをデコードする方法
PHPでQRコードの画像をデコードし、値を変数等に格納したい。何とかならないか調 ...
-
PHPで複数の変数に同じ値を代入する方法(多重代入 / 一括代入 / 同時代入)
PHPのソースコード上に「$a = $b = $c = 12;」みたいな見たこと ...
-
formにhCaptchaを組み込み、PHPで結果を検証する方法
お問い合わせフォーム等でGoogle reCAPTCHAではなくhCaptcha ...
-
Codeigniter3で外部ファイル(CSS / JS)の読み込みと共通パーツ化する方法
CodeigniterでCSSやJSファイル等の外部ファイル読み込みたかった。ま ...