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

バリデーションをマスターする (1/6)

作成:2015-10-17 15:21
更新:2015-10-17 15:21

■テーブルクラスとvalidationDefault

ユーザーから送られたデータを受け取り保存する場合、重要になるのが「用意された値が正しい形になっているか」ということでしょう。例えば、足りないデータがないか。データの内容は正しいか。不正な値が混じっていないか。こうしたことをチェックし、正しくデータが渡されていることがわかった上で、それらをテーブルに保存したりするわけですね。

この「渡されたデータのチェック」を行うのが、「バリデーション」と呼ばれる機能です。これは、いろいろな使い方ができるのですが、もっともわかりやすいのは「テーブルクラス」で利用する方法でしょう。

先に作成しておいたPersonのテーブルクラス(PersonsTable)を開いてみてください。このPersonsTableクラス内に、「validationDefault」というメソッドが用意されていることがわかります(下のリスト参照)。これは以下のような形をしています。
public function validationDefault(Validator $validator)
{
    ……内容……
    return $validator;
}
このvalidationDefaultメソッドは、このテーブルに保存を行おうとするとき自動的に作成されるバリデーションオブジェクトを用意するためのものです。要するに「デフォルトのバリデーション」が、ここで作られていたのです。

引数には「Validator」というクラスのインスタンスが渡されます。これが、バリデーションを管理するクラスです。渡されたValidatorは、このPersonsTableでエンティティの保存作業が行われるときに利用されるバリデーション処理のオブジェクトです。

このValidatorに、必要なバリデーションの設定を追加し、最後にreturnすれば、そのValidatorがデータ保存時に実行され、値がチェックされる、というわけです。

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

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 プログラミング入門」に戻る