Um es einfach auszudrücken, was ich tun möchte, ist zu überprüfen, ob der Wert eines bestimmten Eingangs exists
in der Datenbank ist , aber ich möchte, dass die Regel exists
nur dann angewendet wird, wenn auch eine andere Eingabe mit einem bestimmten Wert vorhanden ist.Wenden Sie eine bestimmte Validierungsregel auf einen bestimmten Eingang an, nur wenn ein anderer Eingang ebenfalls vorhanden und auf einen bestimmten Wert eingestellt ist
Zum Beispiel habe ich ein Formular mit einer Auswahl namens type
und ein Textfeld mit dem Namen id
.
<select name="type">
<option value="0">Type0</option>
<option value="1">Type1</option>
</select>
<input type="text" name="id">
Wenn die type
vorhanden ist und gleich zu 1
ich, wenn der id
Eingang exists
in der Datenbanktabelle users
, da sonst die exists
Regel überprüfen möchten nicht angewendet werden, während der Rest der Gültigkeitsregel wie üblich angewendet werden.
Edit:
Vorzugsweise Ich möchte ein Formular Anfrage verwenden, um die Validierung zu tun. Kann das mit einer Formularanfrage erreicht werden?
Danke, dass genau meine Frage beantwortet. Wissen Sie, ob das Gleiche in einer Formularanfrage erreicht werden kann? –
Ich habe gerade entdeckt, dass es auch durch Überschreiben der 'validate' Methode des 'ValidatesWhenResolvedTrait'-Merkmals gemacht werden kann, aber Ihre Lösung ist viel eleganter, also werde ich das verwenden. –
Ich habe eine kleine Ergänzung zu Ihrer Antwort gemacht, weil sie in ihrer vorherigen Form alle vordefinierten Regeln für das Zielfeld überschrieben hat. Jetzt prüft es zuerst, ob irgendwelche Regeln für dieses Feld bereits existieren und wenn ja, hängt es die 'exists'-Regel an sie an. –