CakePHPでFormを作ってみた~validate編~


今回はフォームにエラーチェックをつけてみました。

前回の続きです
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編~でした
でわでわ

コメントする

*