Magento 2 - การตรวจสอบแบบฟอร์ม


32

มีภาพรวมสำหรับคุณลักษณะการตรวจสอบความถูกต้องของฟอร์มใหม่ใน Magento 2 หรือไม่

คำตอบ:


37

คุณสามารถเพิ่มคลาสสำหรับการตรวจสอบใน Magento 2 ดูตัวอย่างร้อง มีเกือบ 72 กฎ (ระดับการตรวจสอบ) คุณสามารถใช้:

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

ดูบล็อกสำหรับรายการกฎที่มีอยู่สำหรับข้อมูลเพิ่มเติม:

นี่คือรายการของกฎการตรวจสอบชั้นเรียนที่สนับสนุนโดยวีโอไอพี 2 คุณเพียงแค่ต้องเพิ่มคลาส CSS เพื่อใช้กฎ

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
มีตัวอย่างวิธีการใช้ลวดลายหรือไม่? tnx
Antonio Pedicini

35

มี 3 วิธีในการใช้การตรวจสอบความถูกต้องของแบบฟอร์มใน magento 2

หากต้องการเปิดใช้งานการตรวจสอบความถูกต้องของจาวาสคริปต์ให้ใช้รหัสต่อไปนี้ในเทมเพลตของคุณ

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

* แบบฟอร์มที่กำหนดเองเป็นแบบฟอร์ม id คุณสามารถแทนที่ด้วยแบบฟอร์มรหัสของคุณ

รายการกฎการตรวจสอบแบบฟอร์ม

ในการสรุปบทความนี้จะมีรายการชื่อกฎการตรวจสอบความถูกต้องที่นี่เพื่อเป็นข้อมูลอ้างอิงอย่างรวดเร็วไปยังเอกสารทางการ:

กฎวีโอไอพี:

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:

required,

remote,

email,

url,

date,

dateISO,

number,

digits,

creditcard,

equalTo,

maxlength,

minlength,

rangelength,

range,

max,

min

อ้างอิงhttp://inchoo.net/magento-2/validate-custom-form-in-magento-2/


ฉันต้องการใช้การตรวจสอบฝั่งเซิร์ฟเวอร์ใน magento 2 คุณแบ่งปันลิงค์หรือเอกสารให้ฉันได้ไหม
Khushbu_sipl

ฉันคิดว่าคุณได้ถามคำถามที่นี่แล้วmagento.stackexchange.com/questions/161300/…ขอให้ลิงก์นี้ช่วยผู้อื่น
Vaibhav Ahalpara

9

ในองค์ประกอบ UI สามารถใช้งานได้โดยการตั้งค่าตัวอย่าง (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>

ดูตัวอย่างเพิ่มเติมในไฟล์:
vendor/magento/module-cms/view/adminhtml/ui_component/cms_page_form.xml

รายการเครื่องมือตรวจสอบความถูกต้องในองค์ประกอบ UI ที่สามารถพบ
vendor/magento/module-ui/view/base/web/js/lib/validation/rules.jsได้

เพิ่งเขียนสคริปต์นี้เพื่อหยิบกุญแจทั้งหมดพร้อมข้อความแสดงข้อผิดพลาดเพื่ออธิบาย:

  • required-entry:
    นี่เป็นฟิลด์บังคับ
  • validate-alphanum-with-ช่องว่าง:
    โปรดใช้เฉพาะตัวอักษร (az หรือ AZ), ตัวเลข (0-9) หรือเว้นวรรคในช่องนี้เท่านั้น
  • phoneUK:
    โปรดระบุหมายเลขโทรศัพท์ที่ถูกต้อง
  • validate-email:
    โปรดป้อนที่อยู่อีเมลที่ถูกต้อง (เช่น johndoe@domain.com)
  • ipv4:
    โปรดป้อนที่อยู่ IP v4 ที่ถูกต้อง
  • ตรวจสอบ:
    นี่เป็นช่องที่ต้องกรอก
  • ตรวจสอบ - เลือก:
    โปรดเลือกตัวเลือก
  • ipv6:
    โปรดป้อนที่อยู่ IP v6 ที่ถูกต้อง
  • เวลา:
    โปรดป้อนเวลาที่ถูกต้องระหว่าง 00:00 น. ถึง 23:59 น
  • ตรวจสอบหมายเลข:
    โปรดป้อนหมายเลขที่ถูกต้องในฟิลด์นี้
  • validate-phoneLax:
    โปรดป้อนหมายเลขโทรศัพท์ที่ถูกต้อง ตัวอย่างเช่น (123) 456-7890 หรือ 123-456-7890
  • dateITA:
    โปรดป้อนวันที่ที่ถูกต้อง
  • validate-xml-identifier:
    โปรดป้อน XML-identifier ที่ถูกต้อง (เช่น: some_1, block5, id-4)
  • validate-clean-url:
    โปรดป้อน URL ที่ถูกต้อง ตัวอย่างเช่นhttp://www.example.comหรือ www.example.com
  • validate-admin-password:
    โปรดป้อนอักขระ 7 ตัวขึ้นไปโดยใช้ทั้งตัวเลขและตัวอักษร
  • validate-no-html-tags:
    ไม่อนุญาตให้ใช้แท็ก HTML
  • validate-integer:
    โปรดป้อนจำนวนเต็มที่ถูกต้องในฟิลด์นี้
  • ตรวจสอบข้อมูล:
    โปรดใช้ตัวอักษร (az หรือ AZ) ตัวเลข (0-9) หรือขีดล่าง (_) ในฟิลด์นี้และอักขระตัวแรกควรเป็นตัวอักษร
  • validate-cc-ukss:
    โปรดป้อนหมายเลขปัญหาหรือวันที่เริ่มต้นสำหรับประเภทสวิตช์ / การ์ดเดี่ยว
  • คำต่ำสุด:
    โปรดป้อนอย่างน้อย {0} คำ
  • โปรดใช้ตัวอักษรและตัวเลข
    ตัวอักษรตัวเลขเว้นวรรคหรือเครื่องหมายขีดล่างเท่านั้น
  • validate-identifier:
    โปรดป้อนรหัส URL ที่ถูกต้อง (เช่น: "example-page", "example-page.html" หรือ "Anotherlevel / example-page")
  • ตรวจสอบถนน:
    โปรดใช้ตัวอักษร (az หรือ AZ), ตัวเลข (0-9), ช่องว่างและ "#" ในฟิลด์นี้
  • validate-zip-international:
    โปรดป้อนรหัสไปรษณีย์ที่ถูกต้อง
  • วันที่ตรวจสอบ:
    โปรดป้อนวันที่ที่ถูกต้อง
  • ตรวจสอบ - มากกว่า - ศูนย์:
    กรุณาใส่ตัวเลขมากกว่า 0 ในฟิลด์นี้
  • ตรวจสอบ - หลัก:
    โปรดป้อนหมายเลขที่ถูกต้องในฟิลด์นี้
  • validate-ssn:
    โปรดป้อนหมายเลขประกันสังคมที่ถูกต้อง (เช่น 123-45-6789)
  • ไม่ใช่จำนวนลบ:
    โปรดป้อนหมายเลขบวกในฟิลด์นี้
  • validate-max-size:
    ไฟล์ที่คุณพยายามอัปโหลดเกินขนาดสูงสุดที่ จำกัด
  • validate-fax:
    โปรดป้อนหมายเลขโทรสารที่ถูกต้อง (เช่น 123-456-7890)
  • validate-if-tag-script-exist:
    โปรดใช้แท็ก SCRIPT กับแอตทริบิวต์ SRC หรือมีเนื้อหาที่เหมาะสมเพื่อรวม JavaScript ไว้ในเอกสาร
  • min_text_length:
    โปรดป้อนสัญลักษณ์มากกว่าหรือเท่ากับ {0}
  • validate-date-au:
    โปรดใช้รูปแบบวันที่นี้: dd / mm / yyyy ตัวอย่างเช่น 17/03/2549 สำหรับวันที่ 17 มีนาคม 2549
  • mobileUK:
    โปรดระบุหมายเลขโทรศัพท์ที่ถูกต้อง
  • Letters-with-basic-punc: โปรดใช้
    ตัวอักษรหรือเครื่องหมายวรรคตอนเท่านั้น
  • validate-number-range:
    ค่าไม่อยู่ในช่วงที่ระบุ
  • phoneUS:
    โปรดระบุหมายเลขโทรศัพท์ที่ถูกต้อง
  • date_range_max:
    วันที่ไม่อยู่ในช่วงที่ระบุ
  • validate-range:
    ค่าไม่อยู่ในช่วงที่ระบุ
  • vinUS:
    หมายเลขประจำตัวยานพาหนะที่ระบุ (VIN) ไม่ถูกต้อง
  • range-words:
    โปรดป้อนระหว่าง {0} และ {1} คำ
  • validate-zip-us:
    โปรดป้อนรหัสไปรษณีย์ที่ถูกต้อง (เช่น 90602 หรือ 90602-1234)
  • validate-email:
    โปรดป้อนที่อยู่อีเมลที่ถูกต้องคั่นด้วยเครื่องหมายจุลภาค ตัวอย่างเช่น johndoe@domain.com, johnsmith@domain.com
  • validate-css-length:
    โปรดป้อน CSS-length ที่ถูกต้อง (เช่น: 100px, 77pt, 20em, .5ex หรือ 50%)
  • รหัสไปรษณีย์:
    รหัสไปรษณีย์ของคุณต้องอยู่ในช่วง 902xx-xxxx ถึง 905-xx-xxxx
  • validate-phoneStrict:
    โปรดป้อนหมายเลขโทรศัพท์ที่ถูกต้อง ตัวอย่างเช่น (123) 456-7890 หรือ 123-456-7890
  • dateNL: ลำดับขั้น
    ตอนแรกของคุณ
  • ตัวอักษรเท่านั้น:
    โปรดตัวอักษรเท่านั้น
  • max_text_length:
    โปรดป้อนสัญลักษณ์น้อยกว่าหรือเท่ากับ {0}
  • ตรวจสอบ - ไม่ใช่ - ลบ - หมายเลข:
    โปรดป้อนหมายเลข 0 หรือมากกว่าในฟิลด์นี้
  • validate-per-page-value-list:
    โปรดป้อนค่าที่ถูกต้องเช่น: 10,20,30
  • ไม่มีช่องว่าง:
    กรุณาอย่าเว้นวรรค
  • ตรวจสอบสถานะ:
    โปรดเลือกรัฐ / จังหวัด
  • validate-url:
    โปรดป้อน URL ที่ถูกต้อง ต้องใช้โปรโตคอล (http: //, https: // หรือ ftp: //)
  • date_range_min:
    วันที่ไม่อยู่ในช่วงที่ระบุ
  • validate-numbers-range:
    ค่าไม่อยู่ในช่วงที่ระบุ
  • มากกว่า - เท่ากับ -:
    โปรดป้อนค่าที่มากกว่าหรือเท่ากับ {0}
  • validate-no-empty:
    ค่าว่าง
  • validate-zero-or-more:
    โปรดป้อนตัวเลข 0 หรือมากกว่าในฟิลด์นี้
  • validate-cc-number:
    โปรดป้อนหมายเลขบัตรเครดิตที่ถูกต้อง
  • validate-emailSender:
    โปรดป้อนที่อยู่อีเมลที่ถูกต้อง (เช่น johndoe@domain.com)
  • validate-new-password:
    โปรดป้อนอักขระ 6 ตัวขึ้นไป ช่องว่างนำหน้าและต่อท้ายจะถูกละเว้น
  • ตรวจสอบ - ลูกค้า - รหัสผ่าน:
    ความยาวขั้นต่ำของฟิลด์นี้จะต้องเท่ากับหรือมากกว่าสัญลักษณ์% 1 ช่องว่างนำหน้าและต่อท้ายจะถูกละเว้น
  • validate-password:
    โปรดป้อนอักขระ 6 ตัวขึ้นไป ช่องว่างนำหน้าและต่อท้ายจะถูกละเว้น
  • น้อยกว่าเท่ากับ -:
    โปรดป้อนค่าที่น้อยกว่าหรือเท่ากับ {0}
  • ตรวจสอบ - สกุลเงินดอลลาร์:
    โปรดป้อนจำนวนเงินดอลลาร์ที่ถูกต้อง ตัวอย่างเช่น $ 100.00
  • เวลา 12h:
    โปรดป้อนเวลาที่ถูกต้องระหว่าง 00:00 น. ถึง 12:00 น
  • validate-alphanum:
    โปรดใช้ตัวอักษร (az หรือ AZ) หรือตัวเลข (0-9) ในฟิลด์นี้ ไม่อนุญาตให้มีช่องว่างหรืออักขระอื่น ๆ
  • validate-item-volume:
    เราไม่รู้จักหรือสนับสนุนประเภทส่วนขยายไฟล์นี้
  • รหัสตรวจสอบ:
    โปรดใช้ตัวอักษร (az), ตัวเลข (0-9) หรือขีดล่าง (_) ในฟิลด์นี้และอักขระตัวแรกควรเป็นตัวอักษร
  • email2:
    โปรดป้อนหมายเลขบัตรเครดิตที่ถูกต้อง
  • คำสูงสุด:
    โปรดป้อน {0} คำหรือน้อยกว่า
  • stripped-min-length:
    โปรดป้อนอักขระอย่างน้อย {0} ตัว
  • validate-alpha:
    โปรดใช้ตัวอักษรเท่านั้น (az หรือ AZ) ในฟิลด์นี้
  • รูปแบบ:
    รูปแบบไม่ถูกต้อง
  • จำนวนเต็ม: โปรด
    บวกหรือลบไม่ใช่ตัวเลขทศนิยม

บท:

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

หากคุณอ้างถึง / ลูกค้า / บัญชี / หน้าสร้างคุณสามารถดูรหัสต่อไปนี้ภายใต้แบบฟอร์ม:

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

และถ้าคุณตรวจสอบที่คุณลักษณะอินพุตของฟอร์มคุณสามารถดู Magento 1 เช่นclassค่าแอตทริบิวต์พร้อมกับdata-validateแอตทริบิวต์ใหม่ นี่เป็นพื้นฐานของการก้าวขึ้น

ไฟล์คีย์สำหรับการตรวจสอบความถูกต้อง:


ขอบคุณสำหรับคำตอบ ฉันพบว่ามีการตรวจสอบข้อมูลคุณลักษณะใหม่ด้วยเช่นกัน แต่ก็น่าสนใจว่ามีการตรวจสอบความถูกต้องอะไรบ้าง ในกรณีของฉันฉันต้องการตรวจสอบช่องทำเครื่องหมายและชุด RadioButton
ClassMP

ฉันต้องการใช้การตรวจสอบฝั่งเซิร์ฟเวอร์ใน magento 2 คุณช่วยแบ่งปันลิงก์หรือเอกสารให้ฉันได้
Khushbu_sipl

2

เมื่อใช้ส่วนประกอบ UIในการสร้างแบบฟอร์มเราสามารถใช้การตรวจสอบเช่นด้านล่างมันใช้งานได้ใน Magento 2.1.x ฉันยังไม่ได้ทดสอบในเวอร์ชันอื่น

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

สังเกตตรวจสอบรายการในนั้นเราสามารถเพิ่มกฎการตรวจสอบเช่นrequired-entry, validate-integerฯลฯ

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

กฎการตรวจสอบทั้งหมดที่คุณสามารถหาได้ในไฟล์vendor/magento/module-ui/view/base/web/js/lib/validation/rules.jsเช่นvalidate-dateและvalidate-emailsอื่น ๆ


1

ฉันมีข้อกำหนดเดียวกันสำหรับการตรวจสอบแบบฟอร์ม Magento2 และฉันทำรหัสนี้

ก่อนอื่นเราจะตั้งค่าแบบทดสอบ

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

เพื่อเปิดใช้งานการตรวจสอบ javascript สำหรับการตรวจสอบแบบฟอร์ม Magento2

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

ข้อมูลอ้างอิง :: http://www.onlinecode.org/magento2-form-validation-example/


0

ตัวเลือก "no-whitespace" ทำงานไม่ถูกต้อง (อย่างน้อยใน Magento 2.1) มันก่อให้เกิดข้อผิดพลาดในประเภทของ "ช่องว่าง" ตัวละคร ค่า "ทดสอบฉัน" และ "ทดสอบฉัน" จะส่งคืนข้อผิดพลาดเดียวกัน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.