Nie mogę wymyślić, jak edytować regułę sprawdzania poprawności w locie, na przykład w moim kontrolerze.CakePHP 3.x: jak edytować regułę sprawdzania poprawności w locie
Moja sprawa: tabela "użytkownicy" zawiera pole "e-mail", którego wartość musi być "unikalna" podczas tworzenia i aktualizowania. Na razie dobrze, stworzyłem poprawne reguły sprawdzania poprawności.
Ale teraz muszę utworzyć akcję, która pozwoli użytkownikom odzyskać swoje hasło. Jest więc formularz, w którym użytkownicy wpisują swój adres e-mail, a ten formularz musi zostać zatwierdzony. Po tym akcie sprawdza, czy istnieje ten adres e-mail i wysyła wiadomość e-mail, aby zresetować hasło.
Tak więc: muszę potwierdzić formularz z zasadami sprawdzania poprawności, ale w tym konkretnym przypadku nie potrzebuję adresu e-mail "unikatowy".
Jak zmienić regułę sprawdzania poprawności tylko dla jednej akcji?
Dzięki.
EDIT
Może to?
class UsersTable extends Table {
public function validationDefault(\Cake\Validation\Validator $validator) {
//Some rules...
$validator->add('email', [
'unique' => [
'message' => 'This value is already used',
'provider' => 'table',
'rule' => 'validateUnique'
]
]);
//Some rules...
return $validator;
}
public function validationOnlyCheck(\Cake\Validation\Validator $validator) {
$validator->remove('email', 'unique');
return $validator;
}
}
W moim działania:
$user = $this->Users->newEntity($this->request->data(), [
'validate' => 'OnlyCheck'
]);
Dla mnie to brzmi tak, jakby trzeba zastosować oddzielny walidator, jak to jest tylko o jedno pole, które nie jest jeszcze wielobranżowe być zbawiony? – ndm
Dzięki @ndm, może mogę to zrobić: w tym konkretnym przypadku używam nowego weryfikatora, który rozszerza oryginalny ('UserOnlyCheckValidator rozszerza UserValidator'). W nowym walidatorze mam tylko [usuń] (http://api.cakephp.org/3.0/class-Cake.Validation.Validator.html#_remove) tę regułę. O czym myślisz? –
@ndm, zobacz moją ostatnią edycję –