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']); } } } }
<< 前へ |