use Cake\Validation\Validator;これで、Validatorクラスが使えるようになります。Validatorのインスタンスは、単にnewで作成するだけで作成できます。
$validator = new Validator();簡単ですね。そして、先ほどのaddメソッドなどを使ってバリデーションルールを追加していきます。ルールの追加が完了したら、「errors」メソッドを使ってエラーチェックをします。
$変数 = $validator->errors( チェックするデータ );注意したいのは、引数に指定するのはエンティティインスタンスではなく、連想配列である、という点でしょう。返値は、発生したエラーの情報を配列にまとめたものになります。もしemptyならエラーはない、ということになります。
$errors = $validator->errors($this->request->data);チェックする対象は、送信されたフォームの情報であり、エンティティ($person)ではないので注意しましょう。また、これとは別に、$personではテーブルクラスのvalidationDefaultに用意されたバリデーションもチェックされます。validationDefaultの代りになるわけではないので注意してください。
※リストが表示されない場合
AddBlockなどの広告ブロックツールがONになっているとリストなどが表示されない場合があります。これらのツールをOFFにしてみてください。
public function add()
{
$person = $this->Persons->newEntity();
$this->set('person', $person);
if ($this->request->is('post')) {
$validator = new Validator();
$validator->add(
'age','comparison',['rule' =>['comparison','>',20]]
);
$errors = $validator->errors($this->request->data);
if (!empty($errors)){
$this->Flash->error('comparison error');
} else {
$person = $this->Persons->patchEntity($person,
$this->request->data);
if ($this->Persons->save($person)) {
return $this->redirect(['action' => 'index']);
}
}
}
}
| << 前へ |