Wie validiere ich URL, aber ignoriere, ob http: // oder leer?
-
24-10-2019 - |
Frage
Ich möchte ein Formularfeld für URL validieren. Ich habe die Standardeinstellung für das Feld auf http: // festgelegt. Wenn der Benutzer keine URL eingibt und die http: // verlässt, wird ungültige URL angezeigt. URL ist nicht erforderlich. Wenn es sich also nur um http: // handelt, sollte sie keine Fehlermeldung anzeigen. Wie kann ich es ignorieren, wenn die Person http: // als URL einreicht?
Vielen Dank
Lösung
http: // ist keine gültige URL. Wenn Sie sie also sowieso zulassen möchten, gibt es 2 Optionen
- ein ... kreieren Benutzerdefinierte Validierungsregel, das gilt für eine echte URL + http: //
- Verwenden Sie das Vor dem Rückruf validieren und stellen Sie das URL -Feld auf leer, wenn es gerade ist http: //
Ich hoffe, das hilft
BEARBEITEN
Ich habe vergessen: Sie müssen aber nicht erforderlich einstellen 'allowEmpty' => true
erforderlich -> Das Formular muss ein Feld XYZ enthalten, das an den Server gesendet wird
erlaubt-> Ein Feld kann leer sein
Ich habe den Link zur obigen Rückruffunktion hinzugefügt, aber trotzdem .. hier ist es:
in Ihrer Modellklasse (ich nehme nur an, es ist User
):
class User extends AppModel {
..
function beforeValidate() {
if (isset($this->data['User']['url']) && $this->data['User']['url'] == 'http://') {
$this->data['User']['url'] = '';
}
return true;
}
..
}