cakephp3でバリデーションが通らないのですが原因が分かりません
お世話になってます。
cakephp3のバリデーションについて質問があります。
※cakephpのバージョンは3.3です。
下記のコードのパスワード入力欄で最小値と最大値の制限をかけたいと考えています。
しかし、
minLengthとmaxLengthのバリデーションが通らず、
そのままテーブルにinsertされてしまいます。
※notEmptyだけは動いて、空文字の場合はエラーメッセージを表示してくれます。
どのようなことが原因と考えられるでしょうか。
情報が不足しておりましたら申し訳ありませんが、
言っていただければ追加いたします。
よろしくお願い致します。
add.ctp
<head>
<?=$this->Html->script('account') ?>
</head>
<body>
<?=$this->Form->create($entity) ?>
<div>
<table>
<tr>
<td>NAME </td>
<td>
<?=$this->Form->text('new_name') ?>
</td>
</tr>
<tr>
<td>PASSWORD </td>
<td>
<?=$this->Form->password('new_pass',['id'=>'t1']) ?>
<?=$this->Form->error('new_pass') ?>
</td>
</tr>
<tr>
<td>確認用</td>
<td>
<?=$this->Form->password('re_pass',['id'=>'t2']) ?>
</td>
</tr>
<tr>
<td>性別</td>
<td>
<?=$this->Form->select(
'sex',
array(1=>'男性',2=>'女性')
); ?>
</td>
</tr>
<tr>
<td><?=$this->Form->button('登録',['onclick'=>'return check()']) ?></td>
<td></td>
</tr>
</table>
<?=$this->Form->end() ?>
UsersController.php
※使用するfunctionのみ抜粋
public function add() {
$now = new \DateTime();
if($this->request->isPost()) {
$user = $this->Users->newEntity();
$user->user_name = $this->request->getData(['new_name']);
$user->password = $this->request->getData(['new_pass']);
$user->create_date = $now;
$user->sex = $this->request->getData(['sex']);
if($this->Users->save($user)) {
$this->redirect(['action'=>'index']);
}
}else{
$this->set('entity',$this->Users->newEntity());
}
}
UsersTable.php
class UsersTable extends Table {
public function validationDefault(Validator $validator) {
$validator->notEmpty('new_name');
$validator
->notEmpty('new_pass')
->minLength('new_pass',5,'5文字以上で入力してください。')
->maxLength('new_pass',10,'10文字以内で入力してください。');
return $validator;
}
}