cakephp2.4でのバリデーションメッセージ
「ドットインストール」でcakephpの勉強をしているのですが、#16エラーチェックをしてみようで上手いこといかなかったので、対応方法をメモっておきます。
ちなみに僕は「ドットインストール」の講座作成時の最新バージョンの2.0.0でなく受講時の最新バージョン2.4.0を使ってます。
Modelでこんな感じにメッセージをカスタマイズしたのですが、
<?php class Post extends AppModel{ public $validate = array( 'title' => array( 'rule' => 'notEmpty', 'message' => 'タイトルの空はだめだよ' ), 'body' => array( 'rule' => 'notEmpty', 'message' => '本文の空はだめだよ' ) ); }
画面ではこのように自分で設定したメッセージが表示できませんでした。
そこで、どうやったら対処できるか調べてみると、こちらの記事に対応方法が書かれていたので参考にさせていただきました。
http://d.hatena.ne.jp/cakephper/20130211/1360589926
つまり、CakePHP2.3からinputタグにhtml5のrequired属性がつくようになったため、最近のブラウザでは最近のブラウザではsubmit前入力チェックを行なってしまうため、上の画像のように出てしまうとのこと。
対処方法としては、
viewでフォームを作る際にオプションに「 array('novalidate' => true)」をつけてやればOKとのこと。
<h2>Add post</h2> <?php echo $this->Form->create('Post', array('novalidate' => true)); echo $this->Form->input('title'); echo $this->Form->input('body',array('rows'=>3)); echo $this->Form->end('Save Post');
実際やってみるとできました!!
結構時間かかりましたが、無事対応できました。