Doch komplizierter oder nur mit Plugin machbar.
Bitte hier voten, dass es direkt in den Shopware Core kommt: Validate street in registration for using a number – Have an idea? Share it!
Was machen wir dann mit Finnland, Norwegen, Scotland, Irland, etc. bei denen einige Regionen keine numerischen Hausnummern haben?
Oder wie schicke ich etwas an diese offizielle Adresse? Domkloster, 50667 Köln
Naja, theoretisch könnten die auch ein „Domkloster 1“ machen, das wird der Zusteller hinbekommen. Ich hatte bei mir bestimmt auf so eine Adresse 20-30 mit fälschlicherweise fehlender Hausnummer. Man könnte es ja Länderspezifisch machen mit Regex pro Land und wenn leer, dann eben nicht.
Regex pro Land bei der Straße fände ich auch die wirklich gute Lösung.
Zu „Domkloster, 50667 Köln“ oder generell Adressen ohne Straße oder ohne Straßennummer: das ist nicht die Mehrheit und hier wird man individuell als Shopper eine Lösung finden
Ich hab mal gevotet. Zu „Domkloster, 50667 Köln“ - das lässt sich so bei DHL sowieso nicht als Anschrift anlegen, da ist eine Hausnummer in DE zwingend. Aus meiner Praxis als Händler: In solch einem Fall nimmt man einfach die „1“ und gut ist.
Solche Spezial-Adressen sind auch kein Problem und eine seltenheit, es sind einfach die riesigen Massen an Kunden, welche bei der Adresseingabe auch regelmäßig viel falsch machen oder viel vergessen. Das mit der Hausnummer unterbinden zu können, ist ein großer Anfang zur Ärger-Vermeidung für mich als Händler.
Dann noch für doofe Programmier-Looser & Händler wie mich - ich habe das Plugin „Costum CSS/JS“ installiert, kann man hier ein JS einbinden, das eine entsprechende Fehlermeldung beim Straßenfeld ausgibt. Wenn ja, hat jemand eine idee für einen JS-Code?
Aus der Rubrik keine Ahnung aber trotzdem mitreden:
Für eine direkte Fehlermeldung aus dem Template hatte „moderne Technologie“ die folgende (nutzlose) idee:
{% block component_address_form_street_input %}
<input type="text"
class="form-control{% if violationPath %} is-invalid{% endif %}"
autocomplete="{% if prefix == 'shippingAddress' %}shipping {% elseif prefix == 'billingAddress' %}billing {% endif %}address-line1"
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].*">
{% if violationPath %}
<span class="error-message">**Bitte geben Sie eine Straße mit mindestens einer Ziffer ein.**</span>
{% endif %}
{% endblock %}
Aber leider funktioniert das nicht.
Dann über „moderne Technologie“ erstellt und über das Plugin"Costum CSS/JS" eingesetzt, folgendes JS-Script:
const addressStreetInput = document.getElementById('billingAddressAddressStreet'); // Vermutete ID des Eingabefelds verwendet
addressStreetInput.addEventListener('invalid', (event) => {
if (event.error === 'pattern') {
const errorMessage = 'Bitte geben Sie eine Straße mit mindestens einer Ziffer ein.'; // Fehlermeldung
const errorElement = createErrorMessageElement(errorMessage); // Fehlermeldung-Element erstellen
addressStreetInput.parentNode.insertBefore(errorElement, addressStreetInput.nextSibling); // Fehlermeldung-Element einfügen
addressStreetInput.classList.add('show-error'); // Fehlerklasse zum Eingabefeld hinzufügen
} else {
// Andere Validierungsfehler behandeln (falls zutreffend)
}
});
function createErrorMessageElement(errorMessage) {
const errorElement = document.createElement('div');
errorElement.classList.add('show-error'); // Fehlerklasse zum Fehlermeldung-Element hinzufügen
errorElement.textContent = errorMessage;
return errorElement;
}
Leider auch ohne Funktion. Vielleicht bringt das aber ja jemanden mit Ahnung auf die richtige Idee.