今回はフォームにエラーチェックをつけてみました。
前回の続きです
・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編~でした
でわでわ