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

このエントリーをはてなブックマークに追加

notoです。

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

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

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

controller

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

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

view

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

app/views/element/flash_message.ctp

<div id="infoFlashMessage" class="message">
         <?php echo $message; ?>
</div>

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

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

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');
    }

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

return top