Magento 2 - Convalida del modulo


Risposte:


37

Puoi aggiungere classe per la validazione in Magento 2. Vedi esempio qui sotto. Ci sono quasi 72 regole (classe di validazione) che puoi usare:

$fieldset->addField(
    'email_from',
    'text',
    ['name' => 'email_from', 'label' => __('Email From'), 'title' => __('Email From'), 'required' => true, 'class' => 'validate-email']
);

Consulta il blog per l'elenco delle regole disponibili per ulteriori informazioni:

Ecco un elenco di regole per le classi di validazione supportate da magento 2. Devi solo aggiungere la classe css per applicare la regola.

min_text_length
max_text_length
max-words
min-words
range-words
letters-with-basic-punc
alphanumeric
letters-only
no-whitespace
zip-range
integer
vinUS
dateITA
dateNL
time
time12h
phoneUS
phoneUK
mobileUK
stripped-min-length
email2
url2
credit-card-types
ipv4
ipv6
pattern
validate-no-html-tags
validate-select
validate-no-empty
validate-alphanum-with-spaces
validate-data
validate-street
validate-phoneStrict
validate-phoneLax
validate-fax
validate-email
validate-emailSender
validate-password
validate-admin-password
validate-url
validate-clean-url
validate-xml-identifier
validate-ssn
validate-zip-us
validate-date-au
validate-currency-dollar
validate-not-negative-number
validate-zero-or-greater
validate-greater-than-zero
validate-css-length
validate-number
validate-number-range
validate-digits
validate-digits-range
validate-range
validate-alpha
validate-code
validate-alphanum
validate-date
validate-identifier
validate-zip-international
validate-state
less-than-equals-to
greater-than-equals-to
validate-emails
validate-cc-number
validate-cc-ukss
required-entry
checked
not-negative-amount
validate-per-page-value-list
validate-new-password
validate-item-quantity
equalTo

2
c'è qualche esempio su come usare il pattern? tnx
Antonio Pedicini,

35

Esistono 3 modi diversi per utilizzare la convalida dei moduli in magento 2

Per abilitare la convalida JavaScript utilizzare il seguente codice nel modello

<form class="form" id="custom-form" method="post" autocomplete="off">
 <fieldset class="fieldset">
     <legend class="legend"><span><?php echo __('Personal Information') ?></span></legend><br>
      <div class="field required">
          <label for="email_address" class="label"><span><?php echo __('Email') ?></span></label>
          <div class="control">
              <input type="email" name="email" id="email_address" value="" title="<?php echo __('Email') ?>" class="input-text" data-validate="{required:true, 'validate-email':true}">
          </div>
      </div>
 </fieldset>
 <div class="actions-toolbar">
      <div class="primary">
          <button type="submit" class="action submit primary" title="<?php  echo __('Submit') ?>"><span><?php echo __('Submit') ?></span></button>
      </div>
  </div>
</form>

1

<script type="text/x-magento-init">
    {
        "#custom-form": {
            "validation": {}
        }
    }
</script>

2

<form data-mage-init='{"validation": {}}' class="form" id="custom-form" method="post" autocomplete="off">

3

<script type="text/javascript">
require([
    'jquery',
    'mage/mage'
], function($){

   var dataForm = $('#custom-form');
   dataForm.mage('validation', {});

});
</script>

* il modulo personalizzato è un ID modulo che puoi sostituire con il tuo ID modulo

Elenco delle regole di convalida del modulo

Per concludere questo articolo, viene fornito un elenco di nomi di regole di convalida come riferimento rapido alla documentazione ufficiale:

Regole Magento:

validate-no-html-tags

validate-select

validate-no-empty

validate-alphanum-with-spaces

validate-data

validate-street

validate-phoneStrict

validate-phoneLax

validate-fax

validate-email

validate-emailSender

validate-password

validate-admin-password

validate-customer-password

validate-url

validate-clean-url

validate-xml-identifier

validate-ssn

validate-zip-us

validate-date-au

validate-currency-dollar

validate-not-negative-number

validate-zero-or-greater

validate-greater-than-zero

validate-css-length

validate-number

required-number

validate-number-range

validate-digits

validate-digits-range

validate-range

validate-alpha

validate-code

validate-alphanum

validate-date

validate-date-range

validate-cpassword

validate-identifier

validate-zip-international

validate-one-required

validate-state

required-file

validate-ajax-error

validate-optional-datetime

validate-required-datetime

validate-one-required-by-name

less-than-equals-to

greater-than-equals-to

validate-emails

validate-cc-type-select

validate-cc-number

validate-cc-type

validate-cc-exp

validate-cc-cvn

validate-cc-ukss

validate-length

required-entry

not-negative-amount

validate-per-page-value-list

validate-per-page-value

validate-new-password

required-if-not-specified

required-if-all-sku-empty-and-file-not-loaded

required-if-specified

required-number-if-specified

datetime-validation

required-text-swatch-entry

required-visual-swatch-entry

required-dropdown-attribute-entry

Validate-item-quantity

validate-grouped-qty

validate-one-checkbox-required-by-name

validate-date-between

validate-dob

max-words

min-words

range-words

letters-with-basic-punc

alphanumeric

letters-only

no-whitespace

zip-range

integer

vinUS

dateITA

dateNL

time

time12h

phoneUS

phoneUK

mobileUK

stripped-min-length

email2

url2

credit-card-types

ipv4

ipv6

pattern

allow-container-className

regole jQuery:

required,

remote,

email,

url,

date,

dateISO,

number,

digits,

creditcard,

equalTo,

maxlength,

minlength,

rangelength,

range,

max,

min

fare riferimento a http://inchoo.net/magento-2/validate-custom-form-in-magento-2/


Voglio applicare la validazione lato server in Magento 2CAN pls mi quota di qualsiasi collegamento o doc,
Khushbu_sipl

Penso che tu abbia già posto la domanda qui magento.stackexchange.com/questions/161300/… Possa questo link aiutare altri
Vaibhav Ahalpara,

9

Nei componenti dell'interfaccia utente può essere utilizzato seguendo la configurazione di esempio (Magento v2.2.0):

<form xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Ui:etc/ui_configuration.xsd">
    <fieldset name="general">
        <field name="priority" sortOrder="1000" formElement="input">
            <settings>
                <validation>
                    <rule name="not-negative-amount" xsi:type="boolean">true</rule>
                </validation>
                [...]
            </settings>
        </field>
    </fieldset>
</form>

Vedi altri esempi nel file:
vendor/magento/module-cms/view/adminhtml/ui_component/cms_page_form.xml

L'elenco dei validatori in UI Components è disponibile in
vendor/magento/module-ui/view/base/web/js/lib/validation/rules.js.

Ho appena scritto questo script per afferrare tutte le chiavi con messaggi di errore per una spiegazione:

  • campo obbligatorio:
    questo è un campo obbligatorio.
  • validate-alfanum-con-spazi:
    utilizzare solo lettere (az o AZ), numeri (0-9) o spazi solo in questo campo.
  • phoneUK:
    specifica un numero di telefono valido
  • validate-email:
    inserisci un indirizzo email valido (es: johndoe@domain.com).
  • ipv4:
    inserire un indirizzo IP v4 valido.
  • selezionato:
    questo è un campo obbligatorio.
  • validate-select:
    selezionare un'opzione.
  • ipv6:
    inserire un indirizzo IP v6 valido.
  • orario:
    inserisci un orario valido, tra le 00:00 e le 23:59
  • validate-number:
    inserisci un numero valido in questo campo.
  • validate-phoneLax:
    inserisci un numero di telefono valido. Ad esempio (123) 456-7890 o 123-456-7890.
  • dateITA:
    inserisci una data corretta
  • validate-xml-identifier:
    inserisci un identificativo XML valido (es: qualcosa_1, blocco5, id-4).
  • validate-clean-url:
    inserisci un URL valido. Ad esempio http://www.example.com o www.example.com.
  • validate-admin-password:
    inserisci 7 o più caratteri, usando sia numerico che alfabetico.
  • validate-no-html-tags:
    i tag HTML non sono ammessi.
  • validate-integer:
    inserisci un numero intero valido in questo campo.
  • validate-data:
    utilizzare solo lettere (az o AZ), numeri (0-9) o trattino basso (_) in questo campo e il primo carattere dovrebbe essere una lettera.
  • validate-cc-ukss:
    inserisci il numero di emissione o la data di inizio per il tipo di carta switch / solo.
  • min-words:
    inserisci almeno {0} parole.
  • alfanumerico: solo
    lettere, numeri, spazi o caratteri di sottolineatura
  • validate-identifier:
    inserisci una chiave URL valida (es: "esempio-pagina", "esempio-pagina.html" o "altro livello / pagina-esempio").
  • validate-street:
    utilizzare solo lettere (az o AZ), numeri (0-9), spazi e "#" in questo campo.
  • validate-zip-international:
    inserisci un codice postale valido.
  • validate-date:
    inserire una data valida.
  • validate-maggiore di zero:
    inserisci un numero maggiore di 0 in questo campo.
  • cifre di convalida:
    inserire un numero valido in questo campo.
  • validate-ssn:
    inserire un numero di previdenza sociale valido (es .: 123-45-6789).
  • importo non negativo:
    inserisci un numero positivo in questo campo.
  • validate-max-size: il
    file che si sta tentando di caricare supera il limite massimo di dimensione del file.
  • validate-fax:
    inserire un numero di fax valido (es: 123-456-7890).
  • validate-if-tag-script-esiste:
    utilizzare il tag SCRIPT con l'attributo SRC o con il contenuto appropriato per includere JavaScript nel documento.
  • min_text_length:
    inserisci un numero maggiore o uguale a {0} simboli.
  • validate-date-au:
    Utilizzare questo formato data: gg / mm / aaaa. Ad esempio il 17/03/2006 per il 17 marzo 2006.
  • mobileUK:
    specificare un numero di cellulare valido
  • lettere-con-
    punteggiatura -base: lettere o punteggiatura solo per favore
  • validate-number-range:
    il valore non è compreso nell'intervallo specificato.
  • phoneUS:
    specificare un numero di telefono valido
  • date_range_max:
    la data non è compresa nell'intervallo specificato.
  • validate-range:
    il valore non è compreso nell'intervallo specificato.
  • vinUS:
    il numero di identificazione del veicolo specificato (VIN) non è valido.
  • parole-intervallo:
    inserisci tra {0} e {1} parole.
  • validate-zip-us:
    inserisci un codice postale valido (es .: 90602 o 90602-1234).
  • validate-email:
    inserisci indirizzi email validi, separati da virgole. Ad esempio, johndoe@domain.com, johnsmith@domain.com.
  • validate-css-length:
    inserisci una lunghezza CSS valida (es: 100px, 77pt, 20em, .5ex o 50%).
  • zip-range: il
    tuo CAP deve essere compreso tra 902xx-xxxx e 905-xx-xxxx
  • validate-phoneStrict:
    inserisci un numero di telefono valido. Ad esempio (123) 456-7890 o 123-456-7890.
  • dateNL: data di origine della
    password.
  • solo
    lettere : solo lettere per favore
  • max_text_length:
    inserisci un simbolo minore o uguale a {0}.
  • validate-not-negative-number:
    inserisci un numero 0 o maggiore in questo campo.
  • validate-per-page-value-list:
    inserisci un valore valido, es: 10,20,30
  • no-whitespace:
    nessuno spazio bianco per favore
  • validate-state:
    selezionare State / Province.
  • validate-url:
    inserisci un URL valido. È richiesto il protocollo (http: //, https: // o ftp: //).
  • date_range_min:
    la data non è compresa nell'intervallo specificato.
  • validate-digit-range:
    il valore non è compreso nell'intervallo specificato.
  • maggiore di uguale a:
    inserisci un valore maggiore o uguale a {0}.
  • validate-no-empty:
    valore vuoto.
  • validate-zero-or-larger:
    inserisci un numero 0 o maggiore in questo campo.
  • validate-cc-number:
    inserire un numero di carta di credito valido.
  • validate-emailSender:
    inserisci un indirizzo email valido (es: johndoe@domain.com).
  • validate-new-password:
    inserisci 6 o più caratteri. Gli spazi iniziali e finali verranno ignorati.
  • validate-customer-password: la
    lunghezza minima di questo campo deve essere uguale o maggiore di% 1 simboli. Gli spazi iniziali e finali verranno ignorati.
  • validate-password:
    inserisci 6 o più caratteri. Gli spazi iniziali e finali verranno ignorati.
  • inferiore a uguale a:
    inserisci un valore inferiore o uguale a {0}.
  • validate-currency-dollar:
    inserisci un importo $ valido. Ad esempio $ 100,00.
  • time12h:
    inserire un orario valido, tra le 00:00 e le 12:00
  • validate-alfanum:
    utilizzare solo lettere (az o AZ) o numeri (0-9) in questo campo. Non sono ammessi spazi o altri caratteri.
  • validate-item-Quantity:
    non riconosciamo né supportiamo questo tipo di estensione di file.
  • validate-code:
    utilizzare solo lettere (az), numeri (0-9) o trattino basso (_) in questo campo e il primo carattere dovrebbe essere una lettera.
  • email2:
    inserisci un numero di carta di credito valido.
  • max-words:
    inserisci {0} parole o meno.
  • stripped-min-length:
    inserisci almeno {0} caratteri
  • validate-alpha:
    utilizzare solo lettere (az o AZ) in questo campo.
  • modello:
    formato non valido.
  • intero:
    un numero non decimale positivo o negativo, per favore

Il copione:

declare -A list
key=''
while IFS= read -r line; do
#  echo "${line} -"
  if [ -z "${key:-}" ]; then
    # match validation key
    match=$(echo "${line}" | grep -Eo "^        ['\"]([A-Za-z0-9-]|_)+" | tr -d "' ")
    if [ -n "${match}" ]; then
      key=${match}
    fi
  else
    # match message
    match=$(echo "${line}" | sed -rn "s|.*\\$\.mage\.__[(]['\"](.*)['\"][)].*|\1|p")
    if [ -n "${match}" ]; then
      list[${key}]=${match}
      key=''
    fi
  fi
done < "${DOCROOT_DIR:-/var/www/html}/vendor/magento/module-ui/view/base/web/js/lib/validation/rules.js"

for i in "${!list[@]}"
do
  printf "%s:\n    %s\n" "${i}" "${list[$i]}"
done

3

Se prendi riferimento a / customer / account / create page, puoi vedere il seguente codice sotto il modulo:

<script>
require([
    'jquery',
    'mage/mage'
], function($){

    var dataForm = $('#form-validate');
    var ignore = null;

    dataForm.mage('validation', {
            ignore: ignore ? ':hidden:not(' + ignore + ')' : ':hidden'
        }).find('input:text').attr('autocomplete', 'off');

});
</script>

E se controlli gli attributi di input del modulo, puoi vedere Magento 1 come i classvalori degli attributi insieme al nuovo data-validateattributo. Questa può essere la base per intensificare.

File di chiavi per la convalida:


Grazie per la risposta. Ho trovato anche i nuovi attributi dati validati, ma è interessante quali validazioni sono disponibili. Nel mio caso voglio convalidare una casella di controllo e un set di RadioButton
ClassMP

Voglio applicare la convalida lato server in magento 2 puoi condividere qualsiasi link o documento.
Khushbu_sipl,

2

Quando si utilizzano i componenti dell'interfaccia utente per creare un modulo, è possibile utilizzare la convalida come di seguito, funziona in Magento 2.1.x, non lo testo ancora in un'altra versione.

<field name="priority">
    <argument name="data" xsi:type="array">
        <item name="config" xsi:type="array">
            <item name="dataType" xsi:type="string">text</item>
            <item name="label" xsi:type="string" translate="true">Priority</item>
            <item name="formElement" xsi:type="string">input</item>
            <item name="source" xsi:type="string">module_name</item>
            <item name="dataScope" xsi:type="string">priority</item>
            <item name="validation" xsi:type="array">
                <item name="required-entry" xsi:type="boolean">true</item>
                <item name="validate-integer" xsi:type="boolean">true</item>
            </item>
        </item>
    </argument>
</field>

Nota l' elemento di convalida , in esso potremmo aggiungere regole di convalida , come required-entry, validate-integerecc.

<item name="validation" xsi:type="array">
     <item name="required-entry" xsi:type="boolean">true</item>
     <item name="validate-integer" xsi:type="boolean">true</item>
     <item name="validation_rule_name" xsi:type="boolean">true</item>
     ...
</item>

Tutte le regole di convalida che potresti trovare nel file vendor/magento/module-ui/view/base/web/js/lib/validation/rules.js, come validate-date, validate-emailsecc.


1

Ho lo stesso requisito per Magento2 Form Validation e ho fatto questo codice

Per prima cosa installeremo un modulo di prova

<!-- form tag -->
<form class="form" id="custom-form-id" method="post" autocomplete="off">
   <fieldset class="fieldset">
       <legend class="legend"><span><?php echo __('User Personal Information') ?></span></legend><br>
        <div class="field required">
            <!-- form field -->
            <label for="email_address" class="label"><span><?php echo __('Email') ?></span></label>
            <div class="control">
                <input type="email" name="email" id="email_address" value="" title="<?php echo __('Email') ?>" class="input-text" data-validate="{required:true, 'validate-email':true}">
            </div>
        </div>
   </fieldset>
   <!-- submit button -->
   <div class="actions-toolbar">
        <div class="primary">
            <button type="submit" class="action submit primary" title="<?php  echo __('Submit') ?>"><span><?php echo __('Submit') ?></span></button>
        </div>
    </div>
</form>

Per abilitare la convalida JavaScript per la convalida del modulo Magento2

<!-- enable javascript validation for custom-form-id -->
<script type="text/x-magento-init">
    {
        "#custom-form-id": {
            "validation": {}
        }
    }
</script>

Riferimento :: http://www.onlinecode.org/magento2-form-validation-example/


0

L'opzione "no-whitespace" non funziona correttamente (almeno su Magento 2.1). Attiva un messaggio di errore su qualsiasi tipo di carattere "spazio". I valori "test me" e "test me" restituiranno lo stesso errore.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.