1.やりたいこと
- エラーメッセージを画面に表示させる
- ページ遷移、リダイレクトするとエラーメッセージのSessionは削除される
- エラーメッセージがなければ表示させない
2.環境
PHP 7.0.24
FuelPHP 1.8
※controllerはController_Templateを継承
3.実装
viewにエラーメッセージを表示させる場所を準備
fuel/app/view/test/index.php
<!-- $err_msgが存在した場合は、エラーメッセージを表示 -->
<?php if( ! empty($err_msg)): ?>
<div class="alert alert-danger" role="alert">
<strong>WARNING</strong>:<?php echo $err_msg; ?>
</div>
<?php endif ?>
エラーメッセージを格納する処理
fuel/app/classes/controller/test.php
// 実行される処理例
public function post_hoge()
{
try {
// ifがtrueだった場合はエラー
if ( ! Input::post() ) {
// エラーメッセージを作成
$err_msg = 'エラーです。';
// エラーをスロー
throw new Exceotion($err_msg);
}
// その他処理
} catch (Exception $e) {
// $err_msgをSessionに格納
Session::set_flash('err_msg', $e->getMessage());
// リダイレクト
Response::redirect(Uri::base().'test');
}
// 成功時の処理
}
エラーメッセージをviewに渡す処理
fuel/app/classes/controller/test.php
// リダイレクト先のコントローラー
public function action_index()
{
// viewに渡す変数を格納
$data = array(
'err_msg' => Session::get_flash('err_msg'),
);
// viewを呼び出す
$this->template->content = View::forge('test/index', $data);
}
4.最後に…
これでできるはず…