バリデーションをマスターする (1/6)
作成:2015-10-17 15:21
更新:2015-10-17 15:21
更新:2015-10-17 15:21
■テーブルクラスとvalidationDefault
ユーザーから送られたデータを受け取り保存する場合、重要になるのが「用意された値が正しい形になっているか」ということでしょう。例えば、足りないデータがないか。データの内容は正しいか。不正な値が混じっていないか。こうしたことをチェックし、正しくデータが渡されていることがわかった上で、それらをテーブルに保存したりするわけですね。
この「渡されたデータのチェック」を行うのが、「バリデーション」と呼ばれる機能です。これは、いろいろな使い方ができるのですが、もっともわかりやすいのは「テーブルクラス」で利用する方法でしょう。
先に作成しておいたPersonのテーブルクラス(PersonsTable)を開いてみてください。このPersonsTableクラス内に、「validationDefault」というメソッドが用意されていることがわかります(下のリスト参照)。これは以下のような形をしています。
引数には「Validator」というクラスのインスタンスが渡されます。これが、バリデーションを管理するクラスです。渡されたValidatorは、このPersonsTableでエンティティの保存作業が行われるときに利用されるバリデーション処理のオブジェクトです。
このValidatorに、必要なバリデーションの設定を追加し、最後にreturnすれば、そのValidatorがデータ保存時に実行され、値がチェックされる、というわけです。
この「渡されたデータのチェック」を行うのが、「バリデーション」と呼ばれる機能です。これは、いろいろな使い方ができるのですが、もっともわかりやすいのは「テーブルクラス」で利用する方法でしょう。
先に作成しておいたPersonのテーブルクラス(PersonsTable)を開いてみてください。このPersonsTableクラス内に、「validationDefault」というメソッドが用意されていることがわかります(下のリスト参照)。これは以下のような形をしています。
public function validationDefault(Validator $validator)このvalidationDefaultメソッドは、このテーブルに保存を行おうとするとき自動的に作成されるバリデーションオブジェクトを用意するためのものです。要するに「デフォルトのバリデーション」が、ここで作られていたのです。
{
……内容……
return $validator;
}
引数には「Validator」というクラスのインスタンスが渡されます。これが、バリデーションを管理するクラスです。渡されたValidatorは、このPersonsTableでエンティティの保存作業が行われるときに利用されるバリデーション処理のオブジェクトです。
このValidatorに、必要なバリデーションの設定を追加し、最後にreturnすれば、そのValidatorがデータ保存時に実行され、値がチェックされる、というわけです。
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。
●プログラム・リスト●
public function validationDefault(Validator $validator) { $validator ->add('id', 'valid', ['rule' => 'numeric']) ->allowEmpty('id', 'create'); $validator ->requirePresence('name', 'create') ->notEmpty('name'); $validator ->add('age', 'valid', ['rule' => 'numeric']) ->allowEmpty('age'); $validator ->allowEmpty('mail'); return $validator; }
※関連コンテンツ
「初心者のためのCakePHP3 プログラミング入門」に戻る