【CakePHP2.1】モデルで定義したバリデーションのエラーメッセージを表示する方法

少しはまったのでシェア

例えばPostモデルで定義したhogeフォームのバリデーションを下のように定義します。
Controller では $helpers = array(‘Session’); を定義しておきます。

<?php 
class Post extends AppModel { 
    public $validates = array(  
        'hoge' => array( 
            'rule' => 'notEmpty',
            'message' => 'hogehogehoge' 
        ) 
    );
}

CakePHPのチュートリアルではモデルでバリデーションを定義すれば自動的にエラーメッセージが出力されたのですが、レイアウトを独自なものにした場合(案の定)表示されない。

エラーメッセージを出力するコードはどこかなぁと探してみるとありました。

flash( $key = ‘flash’, $attrs = array ( ) )
http://api20.cakephp.org/class/session-helper#method-SessionHelperflash

エラーメッセージを出力したい場合ビューで次のように書きましょう。

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

あとはCSSで綺麗に装飾してあげればok

自分の場合はコントローラーのメソッドで $this->Session->setFlash(‘表示したい内容’); を定義して、出力します。
CSSやテンプレートはメソッド毎にわけているので切り替えが相当楽です。
よりよいやり方があれば教えてくださいー( ´ω`)