今回はフォームにエラーチェックをつけてみました。
前回の続きです
・CakePHP 2.xでFormを作成してみた
CakePHPのformのバリデートは簡単に出来ますよね。
フォームを作っていてふと思ったのが電話番号や郵便番号などvalidateでどうやるんだろうとふと思いました。
普通に
<?php $this->Xformjp->error('Contact.tel1'); ?>
<?php $this->Xformjp->error('Contact.tel2'); ?>
<?php $this->Xformjp->error('Contact.tel3'); ?>
と書いてルールを‘notEmpty’にしてしまうとこの3フィールドが全部からだった時にはエラーメッセージが3つも出てしまうことになります。かと言って,tel1にのエラーのだけ書くとその他のフィールドのvalidateが通ってしまいます。普通に困ってしまった..
CakePHPでフィールドをまたぐエラーチェックはどうするんだろうと調べてみたら自分でルールを作るみたいですね!
書く場所はそのルールを使うモデル内で宣言するか汎用的に使えるものならAppModel.phpに書くのが一般的です。ちなみに私はAppModel.phpに追加しております。
試しに電話番号のエラーチェックを書いてみた
public function telsNotEmpty(){
$tel1 = $this->data[$this->name]['tel1'];
$tel2 = $this->data[$this->name]['tel2'];
$tel3 = $this->data[$this->name]['tel3'];
if( (empty($tel1) && $tel1 != '0') || (empty($tel2) && $tel2 != '0') || (empty($tel3) && $tel3 != '0') ){
return false;
}else{
return true;
}
}
これでルールの追加はokです。
後は$validateにルールを設定するだけで簡単にフィールドをまたいだチェックがかけられます。
public $validate = array(
'tel1'=>array(
'rule'=>'telsNotEmpty',
'message'=>'電話番号をご入力ください',
),
);
わかれば簡単ですが最初のうちはなれなかったです。
そしてもうひとつ$this->Xformjp->error(‘Contact.hoge’);などのエラーを表示させる時にerrorのスタイルが変更できなくて四苦八苦したましたw
errorのスタイルの変更方法
スタイルの変更もいたって簡単!
$this->Xformjp->error('Contact.hoge',null,array('wrap'=>'span','class'=>'errorMsg'));
と書くと
<span class="errorMsg">ここに設定したエラーメッセージ</span>
の上記の様に表示されます。ずっと第2引数にoptionを書いていてなんでスタイル変わんねーのと馬鹿なことしてましたが第3引数でしたw
最後に
どうだったでしょうか、参考になりましたかね(汗)間違いなどがあればご連絡ください。また、もっといい方法があるよとかあれば教えて欲しいです!!
以上、CakePHPでFormを作ってみた~validate編~でした
でわでわ
