Motomichi Works Blog

モトミチワークスブログです。その日学習したことについて書いている日記みたいなものです。

さくらvpsとcakephp2.6.7で開発日記 その0006 flashメッセージを自作のデザインで表示する

参考にさせて頂いたページ

セッション — CakePHP Cookbook 2.x ドキュメント

View/Elements/Modules/mod-flash-message-0001.ctpの作成とその記述内容

例として以下の通り。

<div class="mod-flash-message-0001 <?php echo $class; ?>">
  <?php echo $message; ?>
</div>

$this->Session->setFlash()の第三引数まで指定する方法で出力する場合

任意のControllerの中に記述する内容

例として、indexアクションに以下のように記述する。
色やメッセージを出し分ける場合はif文とか使って、setするオプションを変更すれば良さそう。

  public function index(){
    $this->Session->setFlash(
      'メッセージ',// Elementsの中で$messageとして使用される文字列
      '/Modules/mod-flash-message-0001',// View/Elements内のどのctpを使用するかを指定
      array(
        // Elements内で使用できる変数を追加(この場合は$classが使えるようになる)
        'class' => 'example_class'
      )
    );
  }

index.ctpの中に記述する内容

View側では引数を与えずに以下のように記述する。

<?php
  echo $this->Session->flash();
?>

$this->Session->setFlash()の第四引数まで指定する方法で出力する場合

任意のControllerの中に記述する内容

例として、indexアクションに以下のように記述する。

  public function index(){
    // 正常完了時に表示したい内容の設定
    $this->Session->setFlash(
      '正常完了時のメッセージ',// Elementsの中で$messageとして使用される文字列
      '/Modules/mod-flash-message-0001',// View/Elements内のどのctpを使用するかを指定
      array(
        // Elements内で使用できる変数を追加(この場合は$classが使えるようになる)
        'class' => 'example_class'
      ),
      'good'// View側で渡す識別キー文字列
    );
    // エラー時に表示したい内容の設定
    $this->Session->setFlash(
      'エラー時のメッセージ',
      '/Modules/mod-flash-message-0001',
      array(
        'class' => 'example_class'
      ),
      'bad'
    );
  }

index.ctpの中に記述する内容

Controllerの第四引数に設定した文字列と同じものを、以下のようにView側で与える事によって出し分けが可能。

<?php
  echo $this->Session->flash('good');
  echo $this->Session->flash('bad');
?>