1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | public function validationDefault(Validator $validator ){ $validator ->integer( 'id' ) ->allowEmpty( 'id' , 'create' ); $validator ->scalar( "name" ) ->requirePresence( "name" , "create" ) ->notEmpty( "name" ); $validator ->scalar( "mail" ) ->allowEmpty( "mail" ) ->email( "mail" ); $validator ->integer( "age" ) ->requirePresence( "age" , "create" ) ->notEmpty( "age" ); return $validator ; } |
### エラーメッセージを個別に表示
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <p><?= $msg ?></p> <?= $this ->Form->create( $entity , [ 'type' => 'post' , 'url' =>[ 'controller' => 'People' , 'action' => 'add' ]]) ?> <fieldset class = "form" > NAME: <?= $this ->Form->error( 'People.name' ) ?> <?= $this ->Form->text( 'People.name' ) ?> MAIL: <?= $this ->Form->error( 'People.mail' ) ?> <?= $this ->Form->text( 'People.mail' ) ?> AGE: <?= $this ->Form->error( 'People.age' ) ?> <?= $this ->Form->text( 'People.age' ) ?> <?= $this ->Form->submit( '送信' ) ?> </fieldset> <?= $this ->Form-> end () ?> |
### 日本語のバリデーション
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | public function validationDefault(Validator $validator ){ $validator ->integer( 'id' , "idは整数で入力下さい。" ) ->allowEmpty( 'id' , 'create' ); $validator ->scalar( "name" , "テキストを入力下さい。" ) ->requirePresence( "name" , "create" ) ->notEmpty( "name" , "名前は必ず記入してください。" ); $validator ->scalar( "mail" , "テキストを入力下さい。" ) ->allowEmpty( "mail" ) ->email( "mail" , false, "メールアドレスを記入してください。" ); $validator ->integer( "age" ) ->requirePresence( "age" , "create" ) ->notEmpty( "age" , "必ず値を入力下さい。" ) ->greaterThan( 'age' , -1, "ゼロ以上の値を記入ください。" ); return $validator ; } |
### バリデーションメソッド
必須項目: requirePresence, notBlank, notEmpty
空白許可: allowEmpty
ASCII: ascii
数字のみ: numeric, integer, naturalNumber, nonNegativeInteger, decimal
文字と数字のみ: alphaNumeric
真偽値のみ許可: boolean
配列のみ: isArray
半角英数字: containsNonAlphaNumeric
等式: equals, notEquals
比較式: lessThan, lessThanOrEquals, greaterThan, greaterThanOrEquals
指定した範囲: range
半角数字が含まれているか: constrainsNonAlphaNumeric
等式: equal, notEquals
比較式: lessThan, lessThanOrEquals, greaterThan, greaterThanOrEquals
文字数: minLength, maxLength, lengthBetween
日時の入力: date, time, dateTime
配列に含まれるか: inList
2つの項目が同じか: sameAs
項目が含まれるか: hasField
メールアドレス: email
クレジットカード番号: creditCard
URLチェック: url
ipアドレス: ip, ipv4, ipv6
uuid: uuid
なるほど、バリデーションは主にmodelのテーブルで行うのか。controllerではないのね。