cakephp3のバリデーションルール
バリデーションルール
必須
<?php namespace App\Console\Command; use Cake\Console\Shell; use Cake\Validation\Validator; /** * Sample1 shell command. */ class Sample5Shell extends Shell { /** * main() method. * 任意のバリデータを生成し、チェックする * TableオブジェクトやEntityが不要なバージョン * * @return bool|int Success or error code. */ public function main() { // バリデータオブジェクト生成 $validator = new Validator(); // 定義設定 $validator ->validatePresence('name') ->notEmpty('name', [ 'message' => 'nameが未設定' ]) ; // チェック $data = [ 'name' => '' ]; // チェック $errors = $validator->errors($data); var_dump($errors); } }
数字
<?php namespace App\Console\Command; use Cake\Console\Shell; use Cake\Validation\Validator; /** * Sample1 shell command. */ class Sample5Shell extends Shell { /** * main() method. * 任意のバリデータを生成し、チェックする * TableオブジェクトやEntityが不要なバージョン * * @return bool|int Success or error code. */ public function main() { // バリデータオブジェクト生成 $validator = new Validator(); // 定義設定 $validator ->validatePresence('num') // 必須 ->notEmpty('num', [ 'message' => 'numが未設定' ]) // 整数、小数を許可 ->add('num', 'numeric1', [ 'rule' => ['numeric'], 'message' => 'not numeric' ]) // 符号なし整数のみ ->add('num', 'numeric2', [ 'rule' => ['naturalNumber'], 'message' => 'not naturalNumber' ]) ; // チェック $data = [ 'num' => 'a' ]; // チェック $errors = $validator->errors($data); var_dump($errors); } }
英数字
<?php namespace App\Console\Command; use Cake\Console\Shell; use Cake\Validation\Validator; /** * Sample1 shell command. */ class Sample5Shell extends Shell { /** * main() method. * 任意のバリデータを生成し、チェックする * TableオブジェクトやEntityが不要なバージョン * * @return bool|int Success or error code. */ public function main() { // バリデータオブジェクト生成 $validator = new Validator(); // 定義設定 $validator ->validatePresence('code') // 必須 ->notEmpty('code', [ 'message' => 'numが未設定' ]) // 半角英数字 ->add('code', 'alphaNumeric1', [ 'rule' => ['alphaNumeric'], 'message' => 'not alphaNumeric' ]) ; // チェック $data = [ 'code' => '_' ]; // チェック $errors = $validator->errors($data); var_dump($errors); } }
指定文字数
<?php namespace App\Console\Command; use Cake\Console\Shell; use Cake\Validation\Validator; /** * Sample1 shell command. */ class Sample5Shell extends Shell { /** * main() method. * 任意のバリデータを生成し、チェックする * TableオブジェクトやEntityが不要なバージョン * * @return bool|int Success or error code. */ public function main() { // バリデータオブジェクト生成 $validator = new Validator(); // 定義設定 $validator ->validatePresence('code') // 必須 ->notEmpty('code', [ 'message' => 'numが未設定' ]) // 指定文字以上であるか ->add('code', 'minLength1', [ 'rule' => ['minLength', 5], 'message' => 'minLengthが5文字未満' ]) // 指定文字以下であるか ->add('code', 'maxLength1', [ 'rule' => ['maxLength', 2], 'message' => 'maxLengthが2文字を超過' ]) ; // チェック $data = [ 'code' => '1234' ]; // チェック $errors = $validator->errors($data); var_dump($errors); } }
日付
<?php namespace App\Console\Command; use Cake\Console\Shell; use Cake\Validation\Validator; /** * Sample1 shell command. */ class Sample5Shell extends Shell { /** * main() method. * 任意のバリデータを生成し、チェックする * TableオブジェクトやEntityが不要なバージョン * * @return bool|int Success or error code. */ public function main() { // バリデータオブジェクト生成 $validator = new Validator(); // 定義設定 $validator ->validatePresence('code') // 必須 ->notEmpty('code', [ 'message' => 'codeが未設定' ]) // 日付のフォーマットであるか ->add('code', 'date1', [ 'rule' => ['date', "ymd"], 'message' => 'dateがyyyymmdd以外' ]) ; // チェック $data = [ //'code' => '2012-10-12', // 正常 // 'code' => '2012/10/12' // 正常 'code' => '20120401' // error ]; // チェック $errors = $validator->errors($data); var_dump($errors); } }
メールアドレス
<?php namespace App\Console\Command; use Cake\Console\Shell; use Cake\Validation\Validator; /** * Sample1 shell command. */ class Sample5Shell extends Shell { /** * main() method. * 任意のバリデータを生成し、チェックする * TableオブジェクトやEntityが不要なバージョン * * @return bool|int Success or error code. */ public function main() { // バリデータオブジェクト生成 $validator = new Validator(); // 定義設定 $validator ->validatePresence('code') // 必須 ->notEmpty('code', [ 'message' => 'codeが未設定' ]) // 日付のフォーマットであるか ->add('code', 'email1', [ 'rule' => ['email'], 'message' => 'codeがemailではありません' ]) ; // チェック $data = [ //'code' => 'aaa@test.com' 'code' => 'aaa.@test.com' ]; // チェック $errors = $validator->errors($data); var_dump($errors); } }
URL
<?php namespace App\Console\Command; use Cake\Console\Shell; use Cake\Validation\Validator; /** * Sample1 shell command. */ class Sample5Shell extends Shell { /** * main() method. * 任意のバリデータを生成し、チェックする * TableオブジェクトやEntityが不要なバージョン * * @return bool|int Success or error code. */ public function main() { // バリデータオブジェクト生成 $validator = new Validator(); // 定義設定 $validator ->validatePresence('code') // 必須 ->notEmpty('code', [ 'message' => 'codeが未設定' ]) // 日付のフォーマットであるか ->add('code', 'url1', [ 'rule' => ['url'], 'message' => 'codeがurlではありません' ]) ; // チェック $data = [ //'code' => 'http://example.com' 'code' => '://example.com' ]; // チェック $errors = $validator->errors($data); var_dump($errors); } }
任意
<?php namespace App\Console\Command; use Cake\Console\Shell; use Cake\Validation\Validator; /** * Sample1 shell command. */ class Sample5Shell extends Shell { /** * main() method. * 任意のバリデータを生成し、チェックする * TableオブジェクトやEntityが不要なバージョン * * @return bool|int Success or error code. */ public function main() { // バリデータオブジェクト生成 $validator = new Validator(); // 定義設定 $validator ->validatePresence('code') // 任意 ->allowEmpty('code') // 日付のフォーマットであるか ->add('code', 'url1', [ 'rule' => ['url'], 'message' => 'codeがurlではありません' ]) ; // チェック $data = [ //'code' => 'http://example.com' 'code' => '' ]; // チェック $errors = $validator->errors($data); var_dump($errors); } }
※allowEmptyを指定することでチェックがあってもブランクの場合は無視する
まとめ
基本的なパターンのみ記載しました。
ユニークや独自チェックなどはそのうち調べるかもしれません。