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.最後に…

これでできるはず…

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.