Validierung für das Postleitzahlfeld auf der Checkout-Seite in Magento 2

7

Ich versuche, eine Validierung für die Postleitzahl an der Kasse anzuwenden, z. B. 4 Zahlen und 2 Zeichen (AZ), z. B.: "9999AA".

Wenn ich jetzt standardmäßig eine ungültige Postleitzahl auf der Checkout-Seite drücke, erhalte ich eine Nachricht wie den folgenden Screenshot: Geben Sie hier die Bildbeschreibung einAber selbst wenn ich die Postleitzahl nicht ändere, drücke ich auf Weiter und beende meine Bestellung.
Weiß jemand, wie man dieses Problem löst?
Ich habe diesen Link für die Javascript-Validierung in Magento 2 Magento2 Validator gefunden , weiß aber nicht, wo ich diese Validierung anwenden und diese Validierungsregel basierendvalidate-zip-international auf meinem Format ändern kann. Oder gibt es eine andere Möglichkeit, eine Validierungsregel für die Postleitzahl zu erstellen?

Alin Lupoiu
quelle

Antworten:

5

Um eine Validierung für das Zip-Feld Magento_Checkout/layout/checkout_index_index.xml hinzuzufügen, sollten wir diesen Code überschreiben und hinzufügen:

   <item name="validation" xsi:type="array">
        <item name="validate-zip-us" xsi:type="string">true</item>
    </item>

So was

<item name="postcode" xsi:type="array">
    <item name="sortOrder" xsi:type="string">75</item>
        <!-- post-code field has custom UI component -->
    <item name="component" xsi:type="string">Magento_Ui/js/form/element/post-code</item>
    <item name="validation" xsi:type="array">
      <item name="required-entry" xsi:type="string">true</item>
      <item name="validate-zip-us" xsi:type="string">true</item>
    </item>
</item>

zip-rangeZum Beispiel ist eine bereits definierte Regel in rules.js.

Wir können diese Regel überschreiben oder eine andere Regel entsprechend unseren Anforderungen an dieser Stelle erstellen: Theme\Theme\Magento_Ui\web\js\lib\validation\rules.js>

Alin Lupoiu
quelle
Ich habe versucht, die Datei checkout_index_index.xml in meinem Design zu überschreiben, aber keine Auswirkung. Wo genau muss ich nur diese Zeilen? Ist es auch möglich, das Layout zu erweitern, anstatt die gesamte Datei zu überschreiben? Derzeit ist es ziemlich verrückt, dass Luma alle Arten von Texten in das Zip-Feld akzeptiert. Wenn die Steuerzone und der Steuersatz für diesen zusätzlichen Zip-Text nicht festgelegt sind, beträgt die Steuer 0%.
Webninja
Bitte überprüfen Sie die aktualisierte Antwort
Alin Lupoiu
Ich verwende Magento 2.3.2. Ich verwende diesen Code, aber wenn ich diesen Code verwende oder eine zusätzliche Validierung für die Postleitzahl auf diese Weise hinzufüge, funktioniert dies, aber im nächsten Schritt funktioniert die Versandrate falsch. Es wird keine Zahlungsmethode angezeigt.
Shubhajay Das
0

Ich denke nicht, dass das Überschreiben rules.jsdie Antwort darauf ist. Es macht den Job, aber es fühlt sich sehr schmutzig an.

Wenn Sie etwas in den Themenordner legen, hängt unsere Erweiterung stark von dieser Datei ab.

Während wir dort waren, konnten wir dies argumentieren. Ich biete eine entkoppelte und unabhängige Lösung für die Validierung von durch UI-Komponenten generierten Formularen.

Meine Antwort finden Sie hier: Validieren von Formularelementen, die über UI-Komponenten erstellt wurden

Wenn Sie auch die angezeigte Warnmeldung deaktivieren möchten, können Sie meine Antwort hier überprüfen: Deaktivieren der Postleitzahl-Validierung Hinweis Magento 2

vitoriodachef
quelle
0

Ich denke, dies ist der einfachste Weg, um dies zu erreichen. Es ist keine Code-Bearbeitung erforderlich:

Speichern> Attribute> Kundenadresse

Wählen Sie anschließend Ihr Postleitzahl - Feld und auf der Feldkonfiguration können Sie festlegen , input validationwie Numeric onlyund dann min und max Länge.

Geben Sie hier die Bildbeschreibung ein

Adarsh ​​Khatri
quelle
Dies ist richtig, aber es wird keine unterschiedliche Validierung für unterschiedliche Geschäftsansichten akzeptiert
kim na na