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

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

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

■Validatorクラスの主なメソッド

では、どのようにしてValidatorにバリデーションの設定を組み込んでいくのでしょうか。これは、Validatorに用意されている各種のメソッドを利用します。

PersonsTableクラスのvalidationDefaultでは、Validatorにあるいくつかのメソッドが使われていました。ここで使われているものを簡単に整理しましょう。

●値が空かどうかのチェック
$validator->allowEmpty( フィールド名 );
$validator->notEmpty( フィールド名 );
指定したフィールドの値が空かどうかをチェックするものです。allowEmptyは空の値を許可し、notEmptyは逆に空なら却下します。

●フィールドのチェック
$validator->hasField( フィールド名 );
特定のフィールドが用意されているかどうかをチェックするものです。

●フィールドの存在チェック
$validator->requirePresence( フィールド名 );
特定のフィールドに、SQLのNOT NULLに相当する機能を設定し、必須項目にします。

●バリデーションルールの追加
$validator->add( フィールド名 , ルール名 ); 
$validator->add( フィールド名 , ルール名 , 配列 );
$validator->add( フィールド名 , 配列 , 配列 );
バリデーションルールを追加するためのものです。第1引数には追加するフィールド名を指定します。第2引数以降がちょっとややこしくなっています。

・単純な(何の設定なども必要ない)ルールは、第2引数にルール名を指定するだけでOKです。
・設定などが必要な場合は、第2引数に設定情報を連想配列にまとめたものを用意します。
・より複雑なルールでは、第2引数と第3引数に初設定の情報を連想配列にまとめたものを指定することもあります。

――addによるルールの追加がちょっとややこしそうですが、その他のメソッドはフィールド名を指定するだけでとても簡単です。実際にvalidationDefaultに書かれている内容を見ながら、どういうルールが設定されているのか考えてみると良いでしょう。

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

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