[CakePHP3.10] バリデーション2

	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ではないのね。