Zrozumienie walidacji formularzy Magento
Opublikowany: 2021-05-31Spis treści
W naszym dzisiejszym artykule dowiemy się o walidacji formularzy w Magento 2 oraz o tym, jak najlepiej zaimplementować walidację formularzy w swoim sklepie Magento.
Moduły walidacji formularzy
W Magento istnieją trzy główne moduły do walidacji formularzy, które bazują na walidacji jQuery i ją rozszerzają.
-
/lib/web/jquery/jquery.validate.js
: podstawowa walidacja jQuery -
/lib/web/mage/validation.js
: zawiera podstawowe funkcje walidacji i dodawania jQuery, takie jak$.validator.addMethod
, które można wykorzystać do dodania niestandardowych reguł walidacji -
/lib/web/mage/validation/validation.js
: zawieramage/validation.js
i dodaje kilka dodatkowych reguł do walidatora
Zasady walidacji formularzy
Domyślnie dostępne reguły w Magento są przechowywane w /validation/rules.js
. Jednak to nie wszystkie zasady, z których możesz skorzystać. Ponieważ główne moduły walidacji formularzy są oparte na jQuery, możesz skorzystać z wbudowanych w jQuery metod walidacji.
Poradniki
Twórz niestandardowe reguły
Jak wspomniano powyżej, możesz tworzyć niestandardowe reguły, tworząc mixin JavaScript dla modułu mage/validation
i wywołując $.validator.addMethod
, jak na przykład:
$.validator.addMethod( „nazwa reguły”, funkcja(wartość, element) { // Zwróć prawdę lub fałsz po sprawdzeniu reguły walidacji }, $.mage.__('Komunikat o błędzie do wyświetlenia, jeśli walidacja się nie powiedzie') )
Poniższy kod doda regułę walidacji do domieszki, aby sprawdzić, czy pole wejściowe ma tylko pięć słów.
Dostawca/moduł/widok/frontend/requirejs-config.js
konfiguracja zmiennej = { konfiguracja: { domieszki: { 'mag/zatwierdzenie': { 'Vendor_Module/js/validation-mixin': prawda } } } }
Dostawca/moduł/widok/frontend/web/js/validation-mixin.js
define(['jquery'], function($) { „użyj ściśle”; funkcja powrotu () { $.validator.addMethod( 'zatwierdź pięć słów', funkcja(wartość, element) { return value.split(' ').length == 5; }, $.mage.__('Proszę wpisać dokładnie pięć słów') ) } });
Zmodyfikuj istniejącą wiadomość weryfikacyjną
Obiekt wiadomości może się przydać, gdy trzeba tylko zmodyfikować istniejący komunikat sprawdzania poprawności bez zmiany reguły sprawdzania poprawności.
Na przykład w poniższym kodzie:
$('#form-do-walidacji').mag('walidacja', { wiadomości: { 'nazwa wejścia': { 'validation-rule-1': 'Komunikat walidacyjny 1', 'validation-rule-2': 'Komunikat walidacyjny 2', }, } });
input-name
jest kluczem obiektu, a jego wartością jest lista reguł walidacji. Te reguły walidacji mają jako wartość komunikaty walidacyjne, które możesz dowolnie modyfikować według własnych upodobań.
Twórz niestandardowe walidacje formularzy
Dzięki bibliotece mage/validation
możesz tworzyć niestandardowe walidacje formularzy przed przesłaniem ich na serwer.
Krok 1: Rozpocznij walidacje
Istnieją dwa sposoby zainicjowania weryfikacji formularza:
Korzystanie z atrybutu data-mage-init
<form data-mag-init='{"validation": {}}'> ... </form>
Korzystanie ze znacznika typu skryptu text/x-magento-init
<script type="text/x-magento-init"> { „#mój-formularz”: { "walidacja": {} } } </script>
Krok 2: Zdefiniuj reguły walidacji dla pola formularza
Istnieją różne sposoby definiowania reguł walidacji formularzy w Magento

Jako atrybut
<input ... required="true"/>
Jako atrybut z argumentami
<input ... required="true" minlength="15"/>
Jako nazwa klasy
<input ... class="input-text required-entry"/>
Jako nazwa klasy z argumentami
<input ... class="input-text required-entry" minlength="15"/>
Jako atrybut data-validate
:
<input ... data-validate='{"required":true}'/>
Jako atrybut data-validate
z argumentami
<input ... data-validate='{"required":true, "minlength":10}'/>
Korzystanie data-mage-init
<form ... data-mage-init='{"validation": {"rules": {"field-1": {"required":true}}}}'> ... </form>
Używanie data-mage-init
z argumentami
<form ... data-mage-init='{"validation": {"rules": {"field-1": {"required":true, "minlength":20}}}}'> ... </form>
Przykłady
Tutaj postaramy się stworzyć pola formularza, wraz z formularzami walidacji dla każdego pola przy użyciu różnych metod walidacji.
<form class="form" method="post" data-mage-init='{"validation":{"rules": {"field-4": {"required":true}}}}'> <fieldset class="fieldset"> <div class="wymagana nazwa pola"> <label class="label" for="field-1"><span>Pole 1 (z użyciem weryfikacji danych)</span></label> <div class="sterowanie"> <input name="field-1" title="Pole 1" value="" class="input-text" type="text" data-validate='{"required":true, "url": true}' /> </div> </div> <div class="wymagana nazwa pola"> <label class="label" for="field-2"><span>Pole 2 (przy użyciu atrybutu)</span></label> <div class="sterowanie"> <input name="field-2" title="Pole 2" value="" class="input-text" type="text" required="true"/> </div> </div> <div class="wymagana nazwa pola"> <label class="label" for="field-3"><span>Pole 3 (z użyciem nazwy klasy)</span></label> <div class="sterowanie"> <input name="field-3" title="Pole 3" value="" type="text" class="input-text required-entry"/> </div> </div> <div class="wymagana nazwa pola"> <label class="label" for="field-4"><span>Pole 4 (przy użyciu data-mage-init)</span></label> <div class="sterowanie"> <input name="field-4" title="Pole 4" value="" class="input-text" type="text"/> </div> </div> </fieldset> <div class="actions-toolbar"> <div class="podstawowy"> <button type="prześlij" title="Prześlij" class="action prześlij podstawowe"> <span>Prześlij</span> </button> </div> </div> </form>
Korzystając z powyższych pól i walidacji formularzy, Twój wynik powinien wyglądać mniej więcej tak:
