モデルを更に考える (5/7)
作成:2010-02-18 21:08
更新:2010-05-10 20:10
更新:2010-05-10 20:10
■モデルにバリデーションを設定する
モデルは、フォームから送信された値をもとに新しくデータを追加したり更新したりします。が、データベースのデータを書き換える以上、送られてきた値が正しく入力されているかどうかを調べる必要も生じてきます。これが「バリデーション」と呼ばれる処理です。
バリデーションは、送られてきた値に問題が内かをチェックする機能です。CakePHPでは、モデルクラスにバリデーションのための仕組みが備わっていて、簡単な修正を行うだけで値のチェックができるようになります。
では、「models」内に作成したmydatas.phpを開き、下のリストのようにソースコードを修正しましょう。ここでは、Mydataクラスに新しく「$validate」というメンバー変数を追加しています。これが、バリデーションの設定を行うためのものです。これは以下のように値を記述します。
'notEmpty'――空っぽでないかチェックする。カラだとダメ!
'email'――メールアドレスかどうかをチェックする。アドレスでないとダメ!
'numeric'――数字かどうかをチェックする。数字以外が含まれているとダメ!
この他にもバリデーションはたくさんあるのですが、とりあえずこれらは「バリデーションの基本」として覚えておきましょう。これらは、覚えればすぐに役立つものですから。
なお、CakePHP 1.2までは、バリデーション用の定数というのが存在しました。CakePHP関係の資料やサイトなどを見ると、「VALID_NOT_EMPTY」とか「VALID_EMAIL」といった定数を使ってバリデーションを指定しているのを見ることでしょう。これらの定数は、1.3になって全廃されています。必ず名前で指定するようにしてください。
バリデーションは、送られてきた値に問題が内かをチェックする機能です。CakePHPでは、モデルクラスにバリデーションのための仕組みが備わっていて、簡単な修正を行うだけで値のチェックができるようになります。
では、「models」内に作成したmydatas.phpを開き、下のリストのようにソースコードを修正しましょう。ここでは、Mydataクラスに新しく「$validate」というメンバー変数を追加しています。これが、バリデーションの設定を行うためのものです。これは以下のように値を記述します。
$validate = array(連想配列の中に、「"項目名" => バリデーション名」というようにして、各項目に設定するバリデーションを必要なだけ記述していきます。バリデーションの指定方法は、実はさまざまなものがあるのですが、ここはCakePHPに用意されている名前を使って指定する方法だけ説明しておきます。CakePHPには、以下のようなバリデーションの定数が用意されています。
"項目名" => バリデーション名 ,
"項目名" => バリデーション名 ,
……略……
}
'notEmpty'――空っぽでないかチェックする。カラだとダメ!
'email'――メールアドレスかどうかをチェックする。アドレスでないとダメ!
'numeric'――数字かどうかをチェックする。数字以外が含まれているとダメ!
この他にもバリデーションはたくさんあるのですが、とりあえずこれらは「バリデーションの基本」として覚えておきましょう。これらは、覚えればすぐに役立つものですから。
※バリデーション定数について
なお、CakePHP 1.2までは、バリデーション用の定数というのが存在しました。CakePHP関係の資料やサイトなどを見ると、「VALID_NOT_EMPTY」とか「VALID_EMAIL」といった定数を使ってバリデーションを指定しているのを見ることでしょう。これらの定数は、1.3になって全廃されています。必ず名前で指定するようにしてください。
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。
●プログラム・リスト●
<?php class Mydata extends AppModel { public $name = "Mydata"; public $validate = array( "name" => 'notEmpty', "mail" => 'email' ); }
※関連コンテンツ
「初心者のためのCakePHP 1.3 プログラミング入門」に戻る