Magento 2 - Form Doğrulama


Yanıtlar:


37

Magento 2'deki doğrulama için sınıf ekleyebilirsiniz. Bkz. Feryat örneği. Kullanabileceğiniz neredeyse 72 kural var (doğrulama sınıfı):

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

Daha fazla bilgi için mevcut kuralların listesi için bloga bakın :

İşte magento 2 tarafından desteklenen doğrulamalar sınıf kuralları listesi. Kuralın uygulanması için css sınıfını eklemeniz yeterlidir.

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
nasıl kullanılacağı bir örnek var mı? tnx
Antonio Pedicini

35

Magento 2’de form doğrulama kullanmanın 3 farklı yolu vardır.

Javascript doğrulamasını etkinleştirmek için şablonunuzda aşağıdaki kodu kullanın

<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>

* özel form, form kimliğinizle değiştirebileceğiniz form kimliğidir.

Form doğrulama kurallarının listesi

Bu makaleyi özetlemek için, resmi belgelere hızlı bir referans olarak burada bir doğrulama kuralı adı listesi verilmiştir:

Magento kuralları:

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

jQuery kuralları:

required,

remote,

email,

url,

date,

dateISO,

number,

digits,

creditcard,

equalTo,

maxlength,

minlength,

rangelength,

range,

max,

min

bakınız http://inchoo.net/magento-2/validate-custom-form-in-magento-2/


Magento
2can

Zaten burada soru sorduğunu düşünüyorum bence magento.stackexchange.com/questions/161300/… Bu bağlantı diğer yardım
etsin

9

UI bileşenlerinde, aşağıdaki örnek config (Magento v2.2.0) izlenerek kullanılabilir:

<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>

Dosyadaki diğer örnekleri görün:
vendor/magento/module-cms/view/adminhtml/ui_component/cms_page_form.xml

UI Bileşenlerinde bulunan validators listesi içinde bulunabilir
vendor/magento/module-ui/view/base/web/js/lib/validation/rules.js.

Sadece açıklama için hata mesajları içeren tüm anahtarları almak için bu betiği yazdı:

  • gerekli giriş:
    Bu zorunlu bir alandır.
  • alfa ile boşlukları doğrula:
    Lütfen yalnızca bu alanda yalnızca harfler (az veya AZ), sayılar (0-9) veya boşluk kullanın.
  • phoneUK:
    Lütfen geçerli bir telefon numarası belirtin
  • validate-email:
    Lütfen geçerli bir email adresi girin (Ör: johndoe@domain.com).
  • ipv4:
    Lütfen geçerli bir IP v4 adresi girin.
  • işaretli:
    Bu zorunlu bir alandır.
  • validate-select:
    Lütfen bir seçenek seçin.
  • ipv6:
    Lütfen geçerli bir IP v6 adresi girin.
  • Saat:
    Lütfen geçerli bir saat, 00:00 ile 23:59 arasında
  • validate-number:
    Lütfen bu alana geçerli bir numara giriniz.
  • validate-phoneLax:
    Lütfen geçerli bir telefon numarası girin. Örneğin (123) 456-7890 veya 123-456-7890.
  • dateITA:
    Lütfen doğru bir tarih girin
  • validate-xml-tanımlayıcı:
    Lütfen geçerli bir XML tanımlayıcı girin (Ör: bir şey_1, blok5, id-4).
  • validate-clean-url:
    Lütfen geçerli bir URL girin. Örneğin, http://www.example.com veya www.example.com.
  • validate-admin-password:
    Lütfen hem sayısal hem de alfabetik kullanarak 7 veya daha fazla karakter girin.
  • validate-no-html-tags:
    HTML etiketlerine izin verilmez.
  • validate-integer:
    Lütfen bu alana geçerli bir tamsayı girin.
  • validate-data:
    Lütfen bu alanda sadece harfler (az veya AZ), rakamlar (0-9) veya alt çizgi (_) kullanın ve ilk karakter bir harf olmalıdır.
  • validate-cc-ukss:
    Lütfen anahtar / solo kart tipi için çıkış numarasını veya başlangıç ​​tarihini girin.
  • min-words:
    Lütfen en az {0} kelime giriniz.
  • alfasayısal:
    Harfler, sayılar, boşluklar veya sadece alt çizgi lütfen
  • validate-identifier:
    Lütfen geçerli bir URL Anahtarı girin (Ör: "example-sayfa", "example-page.html" veya "anotherlevel / example-page").
  • validate-street:
    Lütfen bu alanda sadece harfler (az veya AZ), rakamlar (0-9), boşluklar ve "#" kullanın.
  • validate-zip-international:
    Lütfen geçerli bir posta kodu girin.
  • validate-date:
    Lütfen geçerli bir tarih girin.
  • Doğrulama-Sıfırdan Büyük:
    Lütfen bu alana 0'dan büyük bir sayı girin.
  • validate-digit:
    Lütfen bu alana geçerli bir numara girin.
  • validate-ssn:
    Lütfen geçerli bir sosyal güvenlik numarası girin (Ör: 123-45-6789).
  • negatif-tutarsız:
    Lütfen bu alana pozitif sayı girin.
  • validate-max-size:
    Yüklemeye çalıştığınız dosya maksimum dosya boyut sınırını aşıyor.
  • validate-fax:
    Lütfen geçerli bir faks numarası girin (Ör: 123-456-7890).
  • validate-if-tag-script-exist:
    Lütfen, belgeye JavaScript eklemek için lütfen SRC niteliğine sahip veya uygun içeriğe sahip SCRIPT etiketini kullanın.
  • min_text_length:
    Lütfen {0} sembolünden daha fazla veya eşit girin.
  • validate-date-au:
    Lütfen bu tarih biçimini kullanın: gg / aa / yyyy. Örneğin 17.03.06.2008 17.03.2006
  • mobileUK:
    Lütfen geçerli bir cep telefonu numarası belirtin
  • basic-punc ile harfler:
    Sadece harfler veya noktalama işaretleri
  • validate-number-range:
    Değer, belirtilen aralıkta değil.
  • phoneUS:
    Lütfen geçerli bir telefon numarası belirtin
  • date_range_max:
    Tarih belirtilen aralıkta değil.
  • validate-range:
    Değer belirtilen aralıkta değil.
  • vinUS:
    Belirtilen araç kimlik numarası (VIN) geçersiz.
  • range-words:
    Lütfen {0} ve {1} kelimeleri arasına giriniz.
  • zip-us-validate:
    Lütfen geçerli bir posta kodu girin (Ör: 90602 veya 90602-1234).
  • validate-e-postalar:
    Lütfen virgülle ayırarak geçerli e-posta adreslerini girin. Örneğin, johndoe@domain.com, johnsmith@domain.com.
  • validate-css-uzunluğu:
    Lütfen geçerli bir CSS uzunluğu girin (Örn: 100px, 77pt, 20em, .5ex veya% 50).
  • zip aralığı:
    ZIP kodunuz 902xx-xxxx ila 905-xx-xxxx aralığında olmalıdır
  • validate-phoneStrict:
    Lütfen geçerli bir telefon numarası girin. Örneğin (123) 456-7890 veya 123-456-7890.
  • dateNL:
    Vul hier een geldigege.
  • sadece harfler: Sadece harfler
    lütfen
  • max_text_length:
    Lütfen {0} sembolünden daha küçük veya eşit girin.
  • Doğrulama-negatif-sayı doğrula:
    Lütfen bu alana 0 veya daha büyük bir sayı girin.
  • sayfa başına değer-listeyi doğrula:
    Lütfen geçerli bir değer girin, örneğin: 10,20,30
  • boşluk
    yok : lütfen boşluk yok
  • validate-state:
    Lütfen Eyalet / İl'i seçin.
  • validate-url:
    Lütfen geçerli bir URL girin. Protokol gereklidir (http: //, https: // veya ftp: //).
  • date_range_min:
    Tarih belirtilen aralıkta değil.
  • validate-digitits range:
    Değer belirtilen aralık içinde değil.
  • eşittir değerinden büyüke:
    Lütfen {0} 'a eşit veya daha büyük bir değer girin.
  • validate-no-empty:
    Boş Değer.
  • validate-zero-or-large:
    Lütfen bu alana 0 veya daha büyük bir sayı girin.
  • validate-cc-number:
    Lütfen geçerli bir kredi kartı numarası girin.
  • validate-emailSender:
    Lütfen geçerli bir e-posta adresi girin (Örn: johndoe@domain.com).
  • validate-new password:
    Lütfen 6 veya daha fazla karakter girin. Önde gelen ve takip eden alanlar dikkate alınmayacaktır.
  • validate-customer-password:
    Bu alanın minimum uzunluğu% 1 sembolünden büyük veya eşit olmalıdır. Önde gelen ve takip eden alanlar dikkate alınmayacaktır.
  • doğrulama şifresi:
    Lütfen 6 veya daha fazla karakter girin. Önde gelen ve takip eden alanlar dikkate alınmayacaktır.
  • eşittir-eşittir-az:
    Lütfen {0} 'a eşit veya daha küçük bir değer girin.
  • validate-dollar-dollar:
    Lütfen geçerli bir $ tutarı girin. Örneğin 100,00 dolar.
  • time12h:
    Lütfen 00: 00-12: 00 arasında geçerli bir saat girin
  • validate-alphanum:
    Lütfen bu alanda sadece harfler (az veya AZ) veya rakamlar (0-9) kullanın. Boşluk veya başka karakterlere izin verilmez.
  • validate-item-quant:
    Bu dosya uzantısı türünü tanımıyor veya desteklemiyoruz.
  • validate-code:
    Lütfen bu alanda sadece harfler (az), rakamlar (0-9) veya alt çizgi (_) kullanın ve ilk karakter bir harf olmalıdır.
  • email2:
    Lütfen geçerli bir kredi kartı numarası girin.
  • max-words:
    Lütfen {0} veya daha az kelime giriniz.
  • stripped-min-length:
    Lütfen en az {0} karakter girin
  • validate-alpha:
    Lütfen bu alanda sadece (az veya AZ) harfleri kullanın.
  • desen:
    Geçersiz biçim.
  • tamsayı:
    Bir pozitif veya negatif ondalık olmayan sayı lütfen

Senaryo:

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

/ Customer / account / create sayfasına başvurursanız, formun altında aşağıdaki kod parçasını görebilirsiniz:

<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>

Ve formun giriş niteliklerini kontrol ederseniz, Magento 1 benzeri classnitelik değerlerini yeni data-validatenitelikle birlikte görebilirsiniz . Bu adım atmanın temeli olabilir.

Doğrulama için anahtar dosyaları:


Cevap için teşekkürler. Yeni veri doğrulama özelliğini de buldum, ancak hangi doğrulamaların mevcut olması ilginç. Benim durumumda bir Checkbox ve bir RadioButton
ClassMP Setini

Magento 2’de sunucu tarafı doğrulaması yapmak istiyorum.
Khushbu_sipl

2

Form oluşturmak için UI bileşenlerini kullanırken, aşağıdaki gibi doğrulamayı kullanabiliriz, Magento 2.1.x'de çalışır, henüz başka bir sürümde test etmiyorum.

<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>

Dikkat doğrulama biz ekleyebilir içinde, öğeyi doğrulama kuralları gibi required-entry, validate-integervb

<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>

Dosyada bulabileceğiniz tüm doğrulama kuralları vendor/magento/module-ui/view/base/web/js/lib/validation/rules.js gibi validate-date, validate-emailsvb


1

Magento2 Form Validation için aynı şartlara sahibim ve bu kodu yaptım

İlk önce bir test formu hazırlayacağız

<!-- 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>

Magento2 Form Validation için javascript doğrulamasını etkinleştirmek için

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

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


0

"boşluksuz" seçeneği düzgün çalışmıyor (en azından Magento 2.1'de). Herhangi bir "boşluk" karakterinde bir hata mesajı tetikler. "Beni test et" ve "beni test et" değerleri aynı hatayı döndürür.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.