3流なシステム屋のメモ書き

プログラムを書いていてメモっておきたいことなどを適当に書いてます

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' => '本文の空はだめだよ'
		)
	);	
 }
  

画面ではこのように自分で設定したメッセージが表示できませんでした。
f:id:syamken:20140120011052p:plain


そこで、どうやったら対処できるか調べてみると、こちらの記事に対応方法が書かれていたので参考にさせていただきました。

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

実際やってみるとできました!!

f:id:syamken:20140120011051p:plain


結構時間かかりましたが、無事対応できました。