CakePHP Session->setFlashでelementを利用する

notoです。 家に帰って横になっていたら、気付いたら朝でした。

CakePHPでsetFlash関数は、頻繁に使われますがinfoメッセージやerrorメッセージで表示のデザインは変えたいですよね。そんなときのelement指定です。

setFlash関数に、elementを指定できることはあまり知られていないような気がしますので、今回はelementの指定方法です。

controller

指定の仕方は簡単で、第2引数にelementの名前を指定してあげるだけです。

1
$this->Session->setFlash('setFlashでelementを利用する','flash_message',null,'info');

view

app/views/element/内にflash_message.ctpを作成します。

app/views/element/flash_message.ctp
1
2
3
<div id="infoFlashMessage" class="message">
<?php echo $message; ?>
</div>

こんな感じでinfoやerrorのelementを指定すれば、色々捗りますよ。

elementをいちいち指定するのがめんどくさいって方は、AppControllerにsetFlashをwrapした関数を用意してあげたら便利かも。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
public $components = array('Session');

/**
 * Session Component
 * Wrap setFlash For InfoMessage
 */
protected function setInfoFlash($message,$params = array()){
    $this->Session->setFlash($message,'flash_info',$params,'info');
}

/**
 * Session Component
 * Wrap setFlash For WarningMessage
 */
protected function setWarningFlash($message,$params = array()){
    $this->Session->setFlash($message,'flash_error',$params,'warning');
}

/**
 * Session Component
 * Wrap setFlash For ErrorMessage
 */
protected function setErrorFlash($message,$params = array()){
    $this->Session->setFlash($message,'flash_warning',$params,'error');
}

コードを色づけるプラグインがあるみたいなので、近々導入したいです。見辛い。。。

Comments