ディフォルトの使い方
> コントローラ
$this->Session->setFlash('メッセージ');
> ビュー
<?php echo $session->flash(); ?>
> 出力されるHTML
<div id="flashMessage" class="message">メッセージ</div>
> CSS(参考までに)
.message { background-color: lightYellow; border: 1px solid #E6DB55; padding: 10px; }
というのがディフォルトの使い方です。
オリジナルのレイアウトを用意していなければ、レイアウトは default.ctp が適用されています。
とても便利な機能なので、できればサクセスメッセージとエラーメッセージのスタイルを分けたいところです。
setFlashメソッドはパラメーターが指定できるのです
setFlashメソッドの書式↓
setFlash($message, $layout = ‘default’, $params = array(), $key = ‘flash’)
主要なコンポーネント»セッション»メソッド»setFlash
※僕は最初からsetFlashをあたりまえのように使っていたので、パラメーターが指定できるとは知りませんでした。。幼い頃の話w
スタイルを変える方法 その1
setFlashメソッドに $params のパラメータを指定します。
> コントローラ
$this->Session->setFlash('サクセスメッセージ', 'default', array('class' => 'flash_success'));
> ビュー
<?php echo $session->flash(); ?>
> 出力されるHTML
<div id="flashMessage" class="flash_success">サクセスメッセージ</div>
$params で指定したクラスが付加されました。
これでサクセスメッセージとエラーメッセージのスタイルを変えることができます。
> コントローラ
if ($this->User->save($this->data)) { $this->Session->setFlash('サクセスメッセージ', 'default', array('class' => 'flash_success')); } else { $this->Session->setFlash('エラーメッセージ', 'default', array('class' => 'flash_failure')); }
> ビュー
<?php echo $session->flash(); ?>
エラーメッセージの場合↓
> 出力されるHTML
<div id="flashMessage" class="flash_failure">エラーメッセージ</div>
> CSS(参考までに)
.flash_success { background-color: lightYellow; border: 1px solid #E6DB55; padding: 10px; } .flash_failure { color: #CD0A0A; border: 1px solid #CD0A0A; background-color: #FEF1EC; padding: 10px; }
スタイルを変える方法 その2
setFlashメソッドに $layout のパラメータを指定してレイアウトを切り替えます。
> コントローラ
if ($this->User->save($this->data)) { $this->Session->setFlash('サクセスメッセージ', 'flash_success'); } else { $this->Session->setFlash('エラーメッセージ', 'flash_failure'); }
> ビュー
<?php echo $session->flash(); ?>
/views/elements フォルダに、flash_success.ctp と flash_failure.ctp を用意します。
> flash_success.ctp
<div class="flash_success"> <?php echo $message; ?> </div>
> flash_failure.ctp
<div class="flash_failure"> <?php echo $message; ?> </div>
これで「$session->flash();」のところが指定したレイアウトで出力されます。
今回は特別なことはしていないので、結果はその1と同じです。
その他、setFlashメソッドのパラメータ指定でできること
$key パラメーターを指定する
> コントローラ
$this->Session->setFlash('メッセージ', 'default', null, 'my_flash');
> ビュー
<?php echo $session->flash('my_flash'); ?>
> 出力されるHTML
<div id="my_flashMessage" class="message">メッセージ</div>
$params パラメーターで変数を渡す
> コントローラ
function delete($id=null) { if ($this->User->delete($id)) { $this->Session->setFlash('これを削除しました >', 'flash_success', array('id' => $id)); } }
> ビュー
<div class="flash_success"> <?php echo $message; ?> <?php echo $id; ?> </div>