Wo muss ich die Validierungs triggern, damit in allen Views wo der Kunde seine Daten eingibt (Registrieren, Benutzer bearbeiten, Checkout ohne Account, …?) die zusätzliche Validierung beim Speichern ausgeführt wird
Wo kann ich die clientseitige Validierung erweitern, sodass ich dem Nutzer direkt Feedback geben kann vor dem Absenden?
Ich wäre für Hilfe sehr dankbar, habe leider keine passende Anleitung gefunden.
Ich arbeite mit CE 4.10.5, Flow Theme, falls das wichtig ist.
in den Funktionen, mit den die jeweiligen Daten validiert werden.
Schau Dir mal die Funktion an, an die die Daten aus dem jeweiligen Formular übermittelt werden. Da drin werden dann die Einzelnen Felder je nach Sinn und Zweck validiert, z.b. Passwort vom der Funktion zum Validieren der Passwörter, etc.
Hier ist z.B. die Funktion zum Registrieren: http://docu.oxid-esales.com/CE/sourcecodedocumentation/4.10.5/oxcmp__user_8php_source.html#l00402
per javascript, aber ich weiß nicht wie gut die Möglichkeiten bei dem verwendeten Script sind.
jqBootstrapValidation heißt die verwendete Bibliothek
Problem:
Sende ich das Formular z.b. auf der Seite ab wo man seine Rechnungsdaten ändern kann unter Mein Konto, kann man das Formular abschicken, und es geht aus dem Edit modus über in den Vorschau modus. Dort ist kein Fehler zu sehen. wechselt man aber nun in edit mode sieht man meine Fehlermeldung.
Schätze dazu brauche ich also noch die JS Validierung. Und da hänge ich noch ein wenig Hat das schon mal jemand erweitert?
Ok ich glaube ich komme der Clientgeschichte näher. Ich müsste nur wissen wie ich Custom JS in die user_billing.tpl reinbekomme von einem Modul aus? Ich werd leider aus der Module erstellen Doku nicht ganz schlau.
Nachdem ich den Quellcode von jqBootstrapValidation studiert habe, denke ich, dass man über $.jqBootstrapValidation(“override”,{validatorTypes:{custom:…}}) eigene Validatoren einfügen können müsste.
edit: ok gefunden wie ich das JS einbinde. Ich versuch mal eine Lösung zum laufen zu bekomme und poste sie dann hier.
xx/out/blocks/base_js.tpl: JS und übersetzung einbinden, man muss sicherstellen dass sie vor dem jqBootstrapValidation Init call im DOM auftaucht, was so bei mir der Fall war.
(function($) {
$.jqBootstrapValidation("override", {
validatorTypes: {
xx: {
name: "xx",
init:function($this, name) {
return {
some:'data'
};
},
validate: function($this, value, validator) {
//do magic
var invalid = true;
return invalid;
}
}
}
});
$('[name*="oxuser__oxbirthdate]"').data('validationXxXx', 'someData'); // example for birthday field (make sure to double the validator Name in the data attribute Name with camelcase)
$('[name*="oxuser__oxbirthdate]"').data('validationXxMessage', xx.i18n.XX_VALIDATION_ERROR);
})(jQuery);
Auch wenn es so aussieht werden damit die original-Validatoren nicht überschrieben, sondern ergänzt.