CakePHP3 で、条件によってバリデーションの条件(必須項目)を変えたいと考えています。
そのため、コントローラーで条件を判断し、フラグを変数($flag)に値を代入します。
そのコントローラーで値を代入した変数「$test」を Modelの validationDefault()で受け取り、条件を分岐したいと考えています。
「validationDefault()」の処理としては下記のようなイメージです。
php
1class SamplesTable extends Table 2{ 3 4 public function validationDefault(Validator $validator) 5 { 6 7 if ($flag == "a"){ 8 $validator->notEmptyString("name", "必須項目です"); 9 $validator->notEmptyString("age", "必須項目です"); 10 } elseif ($flag == "b"){ 11 $validator->notEmptyString("age", "必須項目です"); 12 $validator->notEmptyString("address", "必須項目です"); 13 } 14 15 } 16} 17
Controllerから「$flag」を「validationDefault()」に受け渡しをするにはどのようにすればいいのでしょうか?
Controllerには下記の様な処理で入力データを渡しているのかと思っておりますが、これに加えて、特定の変数のデータを「validationDefault()」にどうやって受け渡しをするのかがよく分かりません。
php
1$data = $this->request->getData(); 2$entity = $this->Samples->newEntity(); 3$entity = $this->Samples->patchEntity($entity, $data);
Controllerから Viewに値を渡すときは下記のような記述をすると思いますが、このような受け渡す方法があるのだろうか?と考えています。
php
1$this->set(compact('flag')); 2
https://blog.s-giken.net/414.html
上記のサイトにあるような、「custom」のルールを作成して項目ごとに条件を設定する方法は理解しましたが、この方法では項目ごとに条件を記述する必要があるため、記述するコードが煩雑になると考えています。
そのため、フラグを受け渡しすることで記述量を少なくすることができるのではないか、と考えています。
よろしくお願いします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。