libro
www.tuyano.com
初心者のためのCakePHP2 プログラミング入門

バリデーションを使おう! (2/5)

作成:2011-12-12 07:57
更新:2012-05-16 16:30

■もっともシンプルなバリデーション設定

では、実際にバリデーションを利用してみましょう。既に作成してある「MySampleData」クラスを利用して、このModelに用意されている項目にバリデーションを設定することにしましょう。このMySampleDataには、以下のような項目がありました。

id――int値。プライマリキーとなるもの。
name――varchar値。名前を入力する。
mail――varchar値。メールアドレスを入力する。
tel――varchar値。電話番号を入力する。

これらのうち、id(プライマリキー)はデータベース側で自動設定されますから、残る3項目を入力してデータを作成することになります。では、これに簡単なバリデーションを設定しましょう。CakePHPのバリデーションにはいくつか書き方がありますが、まずは「シンプル・ルール」というもっとも簡単なバリデーションを用意してみます。

下のリスト欄に、バリデーションを設定したMySampleDataクラスのサンプルコードを掲載しておきました。これを記述したら、./mysampledata/addにアクセスして、適当にデータを登録してみましょう。なお、addアクションは第8回「データの追加・更新・削除」で作成しています。(アドレスは以下の通り)
http://libro.tuyano.com/index3?id=757001
ここでは、$validateに連想配列の値が設定されています。これは整理すると以下のようおな形になっていることがわかります。
$validate = array(
    テーブルの項目名 => バリデーションの名前 ,
    テーブルの項目名 => バリデーションの名前 ,
    ……必要なだけ続く……
}
テーブルの項目名をキーとし、バリデーションの名前をその値に設定します。これで、その項目に指定のバリデーションが設定されます。バリデーションの種類については改めて触れるとして、シンプル・ルールなら非常に簡単にバリデーションが設定できることがわかりますね。

また、正しく入力されないと自動的にフォームが再表示され、項目の下にエラーメッセージが表示されます。これは、Form Helperを使ってフォームを用意しているからこその芸当です。Form Helperでフォームを生成していると、バリデーションで引っかかった際に、それぞれのエラーメッセージを表示して再度フォームを表示させる、といったことをすべて自動で行なってくれるのです。フォームをタグで用意しているとこうはいきません。

エラーの表示は、Form Helperでフォームを作成するとき、以下のようなタグを用意しておくことでできます。
echo $this->Form->error('フィールド名');
これで、指定のフィールドでバリデーションのエラーなどが発生していれば、自動的にそのフィールドのエラーメッセージが表示されます。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

※MySampleData.php

<?php
App::uses('AppModel', 'Model');

class MySampleData extends AppModel {
  public $validate = array(
    'name'=>'notEmpty',
    'mail'=>'email',
    'tel'=>'alphaNumeric'
  );
}


※ビューテンプレートのフォームタグ

<?php
echo $this->Form->create('MySampleData');
echo $this->Form->text('name');
echo $this->Form->error('name');
echo $this->Form->text('mail');
echo $this->Form->error('mail');
echo $this->Form->text('tel');
echo $this->Form->error('tel');
echo $this->Form->submit("送信");
echo $this->Form->end();
?>

※関連コンテンツ

「初心者のためのCakePHP2 プログラミング入門」に戻る