Magento 2 - Xác thực mẫu


Câu trả lời:


37

Bạn có thể thêm lớp để xác thực trong Magento 2. Xem ví dụ dưới đây. Có gần 72 quy tắc (lớp xác nhận) bạn có thể sử dụng:

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

Xem blog để biết danh sách các quy tắc có sẵn để biết thêm thông tin:

Dưới đây là danh sách các quy tắc lớp xác nhận được hỗ trợ bởi magento 2. Bạn chỉ cần thêm lớp css cho quy tắc để áp dụng.

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ó ví dụ nào để sử dụng mẫu? tnx
Antonio Peesini

35

Có 3 cách khác nhau để sử dụng xác thực mẫu trong magento 2

Để kích hoạt xác thực javascript, hãy sử dụng mã sau trong mẫu của bạ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>

* biểu mẫu tùy chỉnh là id biểu mẫu, bạn có thể thay thế nó bằng id biểu mẫu của bạn

Danh sách các quy tắc xác nhận mẫu

Để kết thúc bài viết này, một danh sách các tên quy tắc xác thực được cung cấp ở đây dưới dạng tài liệu tham khảo nhanh về tài liệu chính thức:

Quy tắc 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

Quy tắc jQuery:

required,

remote,

email,

url,

date,

dateISO,

number,

digits,

creditcard,

equalTo,

maxlength,

minlength,

rangelength,

range,

max,

min

tham khảo http://inchoo.net/magento-2/validate-custom-form-in-magento-2/


Tôi muốn áp dụng xác thực phía máy chủ trong magento 2can, vui lòng chia sẻ cho tôi bất kỳ liên kết hoặc tài liệu nào,
Khushbu_sipl

Tôi nghĩ bạn đã đặt câu hỏi ở đây magento.stackexchange.com/questions/161300/ nam Có thể liên kết này giúp người khác
Vaibhav Ahalpara

9

Trong các thành phần UI, nó có thể được sử dụng bằng cách cấu hình mẫu sau (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>

Xem thêm ví dụ trong tập tin:
vendor/magento/module-cms/view/adminhtml/ui_component/cms_page_form.xml

Danh sách trình xác nhận trong Thành phần giao diện người dùng có thể được tìm thấy trong
vendor/magento/module-ui/view/base/web/js/lib/validation/rules.js.

Chỉ cần viết tập lệnh này để lấy tất cả các khóa có thông báo lỗi để giải thích:

  • bắt buộc nhập:
    Đây là một trường bắt buộc.
  • xác thực-alphanum-with-space:
    Vui lòng chỉ sử dụng các chữ cái (az hoặc AZ), số (0-9) hoặc khoảng trắng chỉ trong trường này.
  • phoneUK:
    Vui lòng chỉ định số điện thoại hợp lệ
  • email xác thực:
    Vui lòng nhập địa chỉ email hợp lệ (Ví dụ: johndoe@domain.com).
  • ipv4:
    Vui lòng nhập địa chỉ IP v4 hợp lệ.
  • kiểm tra:
    Đây là một trường bắt buộc.
  • xác thực-chọn:
    Vui lòng chọn một tùy chọn.
  • ipv6:
    Vui lòng nhập địa chỉ IP v6 hợp lệ.
  • thời gian:
    Vui lòng nhập thời gian hợp lệ, từ 00:00 đến 23:59
  • số xác thực:
    Vui lòng nhập một số hợp lệ trong trường này.
  • xác thực-phoneLax:
    Vui lòng nhập số điện thoại hợp lệ. Ví dụ (123) 456-7890 hoặc 123-456-7890.
  • ngày tháng:
    Vui lòng nhập một ngày chính xác
  • xác thực-xml-định danh:
    Vui lòng nhập một định danh XML hợp lệ (Ví dụ: Something_1, block5, id-4).
  • xác thực-sạch-url:
    Vui lòng nhập một URL hợp lệ. Ví dụ: http://www.example.com hoặc www.example.com.
  • xác thực-quản trị viên mật khẩu:
    Vui lòng nhập 7 ký tự trở lên, sử dụng cả số và chữ cái.
  • thẻ xác thực-không-html:
    Thẻ HTML không được phép.
  • xác thực số nguyên:
    Vui lòng nhập một số nguyên hợp lệ trong trường này.
  • xác thực dữ liệu:
    Vui lòng chỉ sử dụng các chữ cái (az hoặc AZ), số (0-9) hoặc dấu gạch dưới (_) trong trường này và ký tự đầu tiên phải là một chữ cái.
  • validate-cc-ukss:
    Vui lòng nhập số phát hành hoặc ngày bắt đầu cho loại thẻ chuyển đổi / solo.
  • từ tối thiểu:
    Vui lòng nhập ít nhất {0} từ.
  • chữ và số: Chỉ
    chữ cái, số, dấu cách hoặc dấu gạch dưới
  • xác thực-định danh:
    Vui lòng nhập Khóa URL hợp lệ (Ví dụ: "example-page", "example-page.html" hoặc "Anotherlevel / example-page").
  • đường xác thực:
    Vui lòng chỉ sử dụng các chữ cái (az hoặc AZ), số (0-9), dấu cách và "#" trong trường này.
  • xác thực-zip-quốc tế:
    Vui lòng nhập mã zip hợp lệ.
  • ngày xác thực:
    Vui lòng nhập một ngày hợp lệ.
  • xác thực-lớn hơn không:
    Vui lòng nhập một số lớn hơn 0 trong trường này.
  • chữ số xác thực:
    Vui lòng nhập một số hợp lệ trong trường này.
  • xác thực-ssn:
    Vui lòng nhập số an sinh xã hội hợp lệ (Ví dụ: 123-45-6789).
  • số không âm:
    Vui lòng nhập số dương vào trường này.
  • validate-max-size:
    Tệp bạn đang cố tải lên vượt quá giới hạn kích thước tệp tối đa.
  • xác thực-fax:
    Vui lòng nhập số fax hợp lệ (Ví dụ: 123-456-7890).
  • xác thực-if-tag-script-tồn tại:
    Vui lòng sử dụng thẻ SCRIPT với thuộc tính SRC hoặc với nội dung phù hợp để đưa JavaScript vào tài liệu.
  • min giác_length:
    Vui lòng nhập nhiều hơn hoặc bằng các ký hiệu {0}.
  • validate-date-au:
    Vui lòng sử dụng định dạng ngày này: dd / mm / yyyy. Ví dụ: 17/03/2006 cho ngày 17 tháng 3 năm 2006.
  • mobileUK:
    Vui lòng chỉ định số điện thoại di động hợp lệ
  • letter-with-basic-punc:
    Xin vui lòng chỉ các chữ cái hoặc dấu chấm câu
  • validate-number-Range:
    Giá trị không nằm trong phạm vi được chỉ định.
  • phoneUS:
    Vui lòng chỉ định số điện thoại hợp lệ
  • date_range_max:
    Ngày không nằm trong phạm vi được chỉ định.
  • xác thực phạm vi:
    Giá trị không nằm trong phạm vi được chỉ định.
  • vinUS:
    Số nhận dạng xe được chỉ định (VIN) không hợp lệ.
  • phạm vi từ:
    Vui lòng nhập từ {0} đến {1} từ.
  • xác thực-zip-us:
    Vui lòng nhập mã zip hợp lệ (Ví dụ: 90602 hoặc 90602-1234).
  • email xác thực:
    Vui lòng nhập địa chỉ email hợp lệ, cách nhau bằng dấu phẩy. Ví dụ: johndoe@domain.com, johnsmith@domain.com.
  • validate-css-length:
    Vui lòng nhập độ dài CSS hợp lệ (Ví dụ: 100px, 77pt, 20em, .5ex hoặc 50%).
  • phạm vi zip:
    Mã ZIP của bạn phải nằm trong phạm vi 902xx-xxxx đến 905-xx-xxxx
  • xác thực-phoneStrict:
    Vui lòng nhập số điện thoại hợp lệ. Ví dụ (123) 456-7890 hoặc 123-456-7890.
  • dateNL:
    Vul hier een geldige datum in.
  • chỉ chữ cái:
    Chỉ thư xin vui lòng
  • max lòng_length:
    Vui lòng nhập ít hơn hoặc bằng các ký hiệu {0}.
  • xác thực-không-âm-số:
    Vui lòng nhập số 0 hoặc cao hơn trong trường này.
  • listate-per-page-value-list:
    Vui lòng nhập một giá trị hợp lệ, ví dụ: 10,20,30
  • không có khoảng trắng:
    Xin vui lòng không có khoảng trắng
  • trạng thái xác thực:
    Vui lòng chọn Bang / Tỉnh.
  • url xác thực:
    Vui lòng nhập một URL hợp lệ. Giao thức là bắt buộc (http: //, https: // hoặc ftp: //).
  • date_range_min:
    Ngày không nằm trong phạm vi được chỉ định.
  • xác thực-chữ số-phạm vi:
    Giá trị không nằm trong phạm vi được chỉ định.
  • lớn hơn so với bằng:
    Vui lòng nhập giá trị lớn hơn hoặc bằng {0}.
  • xác thực-không-trống:
    Giá trị trống.
  • xác thực-không-hoặc-lớn hơn:
    Vui lòng nhập số 0 hoặc cao hơn trong trường này.
  • validate-cc-number:
    Vui lòng nhập số thẻ tín dụng hợp lệ.
  • xác thực-emailSender:
    Vui lòng nhập một địa chỉ email hợp lệ (Ví dụ: johndoe@domain.com).
  • xác thực-mật khẩu mới:
    Vui lòng nhập 6 ký tự trở lên. Không gian hàng đầu và dấu sẽ được bỏ qua.
  • xác thực-khách hàng-mật khẩu:
    Độ dài tối thiểu của trường này phải bằng hoặc lớn hơn ký hiệu% 1. Không gian hàng đầu và dấu sẽ được bỏ qua.
  • xác thực-mật khẩu:
    Vui lòng nhập 6 ký tự trở lên. Không gian hàng đầu và dấu sẽ được bỏ qua.
  • nhỏ hơn bằng bằng:
    Vui lòng nhập giá trị nhỏ hơn hoặc bằng {0}.
  • xác thực-tiền tệ-đô la:
    Vui lòng nhập số tiền $ hợp lệ. Ví dụ $ 100,00.
  • time12h:
    Vui lòng nhập thời gian hợp lệ, từ 00:00 sáng đến 12:00 tối
  • xác thực-alphanum:
    Vui lòng chỉ sử dụng các chữ cái (az hoặc AZ) hoặc số (0-9) trong trường này. Không có khoảng trắng hoặc ký tự khác được cho phép.
  • xác thực-mục-số lượng:
    Chúng tôi không nhận ra hoặc hỗ trợ loại tiện ích mở rộng tệp này.
  • mã xác thực:
    Vui lòng chỉ sử dụng các chữ cái (az), số (0-9) hoặc dấu gạch dưới (_) trong trường này và ký tự đầu tiên phải là một chữ cái.
  • email2:
    Vui lòng nhập số thẻ tín dụng hợp lệ.
  • từ tối đa:
    Vui lòng nhập {0} từ hoặc ít hơn.
  • tước độ dài tối thiểu:
    Vui lòng nhập ít nhất {0} ký tự
  • xác thực-alpha:
    Vui lòng chỉ sử dụng các chữ cái (az hoặc AZ) trong trường này.
  • mẫu:
    Định dạng không hợp lệ.
  • số nguyên:
    Một số không thập phân dương hoặc âm

Kịch bản:

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

Nếu bạn tham khảo trang / khách hàng / tài khoản / tạo trang, bạn có thể thấy đoạn mã sau bên dưới biểu mẫu:

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

Và nếu bạn kiểm tra các thuộc tính đầu vào của biểu mẫu, bạn có thể thấy classcác giá trị thuộc tính giống như Magento 1 cùng với data-validatethuộc tính mới . Đây có thể là cơ sở để bước lên.

Các tệp khóa để xác thực:


Thx cho câu trả lời. Tôi cũng tìm thấy xác thực dữ liệu thuộc tính mới, nhưng thật thú vị khi xác thực có sẵn. Trong trường hợp của tôi, tôi muốn xác thực Hộp kiểm và một bộ RadioButton
ClassMP

Tôi muốn áp dụng xác thực phía máy chủ trong magento 2, bạn có thể vui lòng chia sẻ cho tôi bất kỳ liên kết hoặc tài liệu nào không.
Khushbu_sipl

2

Khi sử dụng các thành phần UI để tạo biểu mẫu, chúng ta có thể sử dụng xác nhận như bên dưới, nó hoạt động trong Magento 2.1.x, tôi chưa thử nghiệm nó trong phiên bản khác.

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

Lưu ý mục xác thực , trong đó chúng ta có thể thêm các quy tắc xác thực , như required-entry, validate-integerv.v.

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

Tất cả các quy tắc xác thực bạn có thể tìm thấy trong tệp vendor/magento/module-ui/view/base/web/js/lib/validation/rules.js, như validate-date, validate-emailsv.v.


1

Tôi có cùng yêu cầu đối với Xác thực mẫu Magento2 và tôi đã thực hiện mã này

Đầu tiên chúng tôi sẽ thiết lập một mẫu thử nghiệm

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

Để bật xác thực javascript cho Xác thực mẫu Magento2

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

Tham khảo :: http://www.onlinecode.org/magento2-form-validation-example/


0

Tùy chọn "không có khoảng trắng" không hoạt động chính xác (ít nhất là trên Magento 2.1). Nó kích hoạt một thông báo lỗi trên bất kỳ loại ký tự "khoảng trắng" nào. Các giá trị "kiểm tra tôi" và "kiểm tra tôi" sẽ trả về cùng một lỗi.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.