Ich kann nicht herausfinden, wie man eine Validierungsregel im laufenden Betrieb, zum Beispiel in meinem Controller, bearbeitet.CakePHP 3.x: wie man eine Validierungsregel im laufenden Betrieb bearbeitet
Mein Fall: Die Tabelle "Benutzer" hat das Feld "E-Mail", deren Wert beim Erstellen und Aktualisieren "eindeutig" sein muss. Für jetzt ist es in Ordnung, ich habe die richtigen Validierungsregeln erstellt.
Aber jetzt muss ich eine Aktion erstellen, mit der Benutzer ihr Kennwort wiederherstellen können. Es gibt also ein Formular, in dem Benutzer ihre E-Mail-Adresse eingeben und dieses Formular muss validiert werden. Danach überprüft die Aktion, ob es diese E-Mail-Adresse gibt und sendet eine E-Mail, um das Passwort zurückzusetzen.
Also: Ich muss das Formular mit den Validierungsregeln validieren, aber in diesem speziellen Fall brauche ich die E-Mail nicht "einzigartig".
Wie kann die Validierungsregel nur für eine Aktion geändert werden?
Danke.
EDIT
Vielleicht?
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;
}
}
In meiner Aktion:
$user = $this->Users->newEntity($this->request->data(), [
'validate' => 'OnlyCheck'
]);
mir, dass so klingt, als ob Sie eine separate Validator verwenden sollten, da dies nur über ein Feld, das nicht einmal gespeichert werden soll ment? – ndm
Danke @ndm, vielleicht kann ich das tun: Für diesen speziellen Fall verwende ich einen neuen Validator, der den ursprünglichen erweitert ('UserOnlyCheckValidator erweitert UserValidator'). Im neuen Validator habe ich nur diese Regel gelöscht (http://api.cakephp.org/3.0/class-Cake.Validation.Validator.html#_remove). Worüber denkst du nach? –
@ndm, siehe meine letzte Bearbeitung –