CakePHP2.5.4でフォームのバリデーションエラー時に指定したメッセージが出ない
最近ドットインストール見ながらCakePHP習得し始めたんですが、モデルに指定したバリデーションエラーメッセージと異なるエラーメッセージが表示されて困ってました。
Model
<?php class Post extends AppModel { public $validate = array( 'title' => array( 'rule' => 'notEmpty', 'message' => '必須入力項目です。' // ←これ表示させたい! ), 'body' => array( 'rule' => 'notEmpty', 'message' => '必須入力項目です。' // ←これ表示させたい! ) ); }
View
<h2>Add post</h2> <?php echo $this->Form->create('Post'); echo $this->Form->input('title'); echo $this->Form->input('body', array('rows' => 3)); echo $this->Form->end('投稿する');
で表示させると、モデルで指定したメッセージと違う。
CakePHP 2.3.10でモデルに指定したフィールドのバリデーションエラーメッセージが無視される問題 | jugedred.net
上の記事にある通り、HTML5の属性が自動で付加されてブラウザのエラーメッセージが優先されてしまうようです。以下のように'required' => false
を追記することで、HTML5のrequired属性を無効化してCakePHP側で設定したメッセージを表示することが出来るようになりました。
View
<h2>Add post</h2> <?php echo $this->Form->create('Post'); echo $this->Form->input('title', array('required' => false)); echo $this->Form->input('body', array('required' => false, 'rows' => 3)); echo $this->Form->end('投稿する');