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; }
### エラーメッセージを個別に表示
<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() ?>
### 日本語のバリデーション
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ではないのね。