Shopware 6.5: Adressvalidierung Straße möglich?

Frage zu Shopware 6.5:
Da ich noch keine Demo Instanz für Shopware 6.5 gesehen habe meine Frage.
Gibts bei der Adressvalidierung die Möglichkeit die Straße zu validieren: Vorhandensein einer Zahl.
Ja ich weiß, dass es Plugins gibt, die die Straße und Hausnummern in 2 Felder aufteilen und somit die Hausnummer als Pflichtfeld setzbar machen. Das ist dann aber wieder ein Plugin was hier eingreift und das bei so einem kritischen Prozess der Registrierung.
Wäre gut, wenn man dies im Standard lösen könnte.

@Shopware-Team: Schonmal positiv, dass es nun endlich eine PLZ Validierung gibt. Das hat mir gefehlt in Shopware 5.x. Bitte wenn möglich eine Demo-Instanz bereitstellen für Shopware 6.5.

1 „Gefällt mir“

Ist auf feedback.shopware.com vorgeschlagen. Wird hoffentlich nächste Woche online gehen. Bitte voten: https://feedback.shopware.com/forums/942607-shopware-6-product-feedback-ideas/suggestions/46514053-validate-street-in-registration-for-using-a-number

Ich habe dort auch gleich mit vorgeschlagen: Prüfen der Stadt in der Registrierung auf Vorhandensein von keinen Zahlen. Hier wird ab und an eine PLZ mit eingetragen bei uns.

Eine Hausnumemrvalidierung macht doch gar keinen Sinn, da es weltweit zu viele unterschiedliche Formate gibt. Genau wie bei der PLZ/Ort.

Wer seinen Kundenkreis auf bestimmte Länder beschränkt, muss das selber im Template validieren.

Schau mal auf Adressvalidierung & Adressprüfung im Shopware-Shop.

@AlexGalax
Pro Land macht das schon Sinn. In Deutschland gibts bei der Straße immer eine Nummer und wenn es keine Nummer gibt (den Fall haben wir auch) trägt der User halt „0“ ein. Das kann bei Geschäftskunden ab und an vorkommen, ist aber nur ein sehr kleiner Bruchteil der Adressen.

Ja, pro Land mach schon Sinn, wenn man es selber macht.
Für Shopware jetzt 200 Adressvalidierungen in allen möglichen Kombinationen einzubauen ist ja quatsch. Adressvalidierung ist nicht trivial und birgt immer die Gefahr, dass der Kunde nicht weiterkommt.

Entweder es gibt immer eine Nummer oder nicht. Aber eine 0 eintragen zu müssen, wenn es keine Nummer gibt, ist einfach ein UI-Designfehler. Wir z.B. weisen den Kunden nur dezent darauf hin, das eine Hausnummer fehlt, indem wir die Meldung einblenden „Haben Sie Ihre Hausnummer vergessen?“ (Hilft natürlich nicht immer).

Aber wenn es unbedingt eine Validierung geben muss, ist es vermutlich am besten, einen Drittanbieter zu verwenden, der die Adresse validiert. Gibt da verschiedene Ansätze und ein paar Plugins im Store. Ist natürlich mit Extrakosten verbunden.

Entwerder direkt bei der Eingabe eine genaue Überprüfung, z.B. über

oder eine ungefähre Überprüfung über die Google-Maps API:

oder hinterher, wenn die Bestellung schon im System ist (warum auch immer):

genau, wer nur in Länder verschickt, wo eine Adresse immer eine Zahl enthalten muss, kann im Template
views/storefront/component/address/address-form.html.twig dem input einfach ein pattern hinzufügen. Die Validierung erfolgt zwar dann nur auf Browserebene sollte aber den Grossteil der Probleme damit abfangen

{% block component_address_form_street_input %}
<input type=„text“
class=„form-control{% if violationPath %} is-invalid{% endif %}“
id=„{{ idPrefix ~ prefix }}AddressStreet“
placeholder=„{{ „address.streetPlaceholder“|trans|striptags }}“
name=„{{ prefix }}[street]“
value=„{{ data.get(‚street‘) }}“
data-form-validation-required
{% if requiredMessage is defined %}data-form-validation-required-message=„{{ requiredMessage }}“{% endif %}
required=„required“
pattern=„.*[0-9].*“>
{% endblock %}

Regex Einstellungen im Straßenfeld (wie bei PLZ) würde schon reichen im backend. Nicht jeder hat Lust und Nerven das im Template anzupassen.

Hier würde ich dann eintragen: min. eine Ziffer.

Ich habe die Anpassung in der address-form.html.twig wie von Liverson veröffentlicht umgesetzt.

Ich stehe aber total auf dem Schlauch bezüglich der Fehlermeldung!

{% if requiredMessage is defined %}data-form-validation-required-message=„{{ requiredMessage }}“{% endif %}

Wie bekomme ich es hin, da eine eigene Fehlermeldung ausgeben zu lassen, z.B. über einen eigenen Textbaustein oder so? Hat jemand einen Vorschlag?

Weiß zufällig jemand, an welcher Stelle die Fehlermeldungsnachricht im Frontend „Die Eingabe muss dem angeforderten Format entsprechen“ von Shopware definiert/vorgegeben/erstellt wird? In den Textbausteinen bin ich nicht fündig geworden.

requiredMessage wird ja weiter oben im Code zusammengebaut, das könntest Du ja ändern

{% set requiredMessage = "error.VIOLATION::IS_BLANK_ERROR"|trans({ '%field%': "address.streetLabel"|trans|sw_sanitize }) %}

Schau ich mir mal an, mal sehen. Die Fehlermeldung „error.VIOLATION::IS_BLANK_ERROR“ ist ja als Textfeld mit dem Inhalt „Die Eingabe darf nicht leer sein.“ definiert, allerdings kommt (wenn die Hausnummer fehlt) nur der Text „Die Eingabe muss dem angeforderten Format entsprechen“ und das Feld wird rot.

Ich vermute mal das ist eine Funktion des Browsers (ausgelöst vermutlich durch das „pattern“), denn den Textbaustein finde ich nicht im gesamten Code. Hatte sowas ähnliches schon mal beim Abnicken der Datenschutzerklärung oder AGB, bin mir nicht sicher. Da kommt so ein gelbes Feld mit Ausrufezeichen davor, kann das sein?

Das ist eine Standard HTML Validation - ganz simpel von Shopware angegeben z.B. „min 5 Zeichen, max 10 Zeichen“. Wenn die Eingabe nicht gültig ist, dann zeigt der Browser die obige Fehlermeldung aus. Da hat Shopware keinen Einfluss drauf. Übersetzungen werden aber automatisch anhand der Sprache des Browsers ausgeliefert.

Viele Grüße

Genauso sieht das bei mir auch aus - nur der Text weicht etwas ab. Wenn das eine Fehlermeldung Browserseitig ist, dann ist vermutlich keine eigene Fehlermeldung für diese Abfrage hinterlegt (und erklärt auch, warum ich keinen Textbaustein dazu fand :slight_smile: ). Ist die Frage, ob man für diese HTML Validation auch eine eigene Fehlermeldung ausgeben könnte.

So wie ich es mal wo gesehen habe, könnte class=„form-control{% if violationPath %} is-invalid{% endif %}“ dafür sorgen, dass der Rahmen Rot wird, wenn „etwas“ nicht passt (also z.B. die Hausnummer oder eine generelle eingabe fehlt). Ist die Frage, ob man das mit einer Textausgabe (Sprechblase etc.) erweitern könnte.

Klugscheißer Modus ON :nerd_face: Sorry, Eike :man_shrugging:t3:

Aber selbstverständlich ist das nicht mehr Aufgabe eines Standard Themes.

Ich habe mal drüber geschaut, aber ich habe nirgendswo gefunden, dass man individuelle Fehlermeldungen definieren kann? Habe ich da etwas übersehen?

Viele Grüße

Das kannst du über JS individualisieren. Ist natürlich nicht weit weg von komplett selber machen in JS

Ja okay, das hatte ich auch gelesen. Aber ich hatte an so etwas wie data attribute gedacht, in denen die Fehlermeldung steht o.ä. Wenn ich schon mit JS anfange, dann kann ich auch direkt die ganze Validierung bauen :smiley:

Viele Grüße

Nein, so einfach wird es einem leider nicht gemacht :smile: