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.最後に…
これでできるはず…