마 젠토 2-양식 검증


답변:


37

Magento 2에서 유효성 검사를위한 클래스를 추가 할 수 있습니다 (아래 예제 참조). 사용할 수있는 거의 72 가지 규칙 (유효성 검사 클래스)이 있습니다.

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

자세한 정보 는 사용 가능한 규칙 목록을 보려면 블로그를 참조하십시오 .

다음은 magento 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
안토니오 페디 치니

35

magento 2에서 양식 유효성 검사를 사용하는 방법에는 3 가지가 있습니다

자바 스크립트 유효성 검사를 활성화하려면 템플릿에서 다음 코드를 사용하십시오.

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

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

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

});
</script>

* custom-form은 양식 ID이며 양식 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.

설명을 위해 오류 메시지와 함께 모든 키를 가져 오기 위해이 스크립트를 작성했습니다.

  • 필수 입력 :
    필수 필드입니다.
  • 공백이있는 알파벳 확인 :
    이 필드에는 문자 (az 또는 AZ), 숫자 (0-9) 또는 공백 만 사용하십시오.
  • phoneUK :
    유효한 전화 번호를 지정하십시오
  • validate-email :
    유효한 이메일 주소를 입력하십시오 (예 : johndoe@domain.com).
  • ipv4 :
    유효한 IP v4 주소를 입력하십시오.
  • 확인 됨 :
    필수 필드입니다.
  • validate-select :
    옵션을 선택하십시오.
  • ipv6 :
    유효한 IP v6 주소를 입력하십시오.
  • 시간 :
    00 : 00 ~ 23 : 59 사이의 유효한 시간을 입력하십시오
  • validate-number :
    이 필드에 유효한 숫자를 입력하십시오.
  • validate-phoneLax :
    유효한 전화 번호를 입력하십시오. 예를 들어 (123) 456-7890 또는 123-456-7890입니다.
  • dateITA :
    정확한 날짜를 입력하십시오
  • validate-xml-identifier :
    유효한 XML 식별자를 입력하십시오 (예 : something_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 :
    이 필드에 유효한 정수를 입력하십시오.
  • validate-data :
    이 필드에는 문자 (az 또는 AZ), 숫자 (0-9) 또는 밑줄 (_) 만 사용하십시오. 첫 문자는 문자 여야합니다.
  • validate-cc-ukss :
    스위치 / 솔로 카드 유형의 발행 번호 또는 시작 날짜를 입력하십시오.
  • 최소 단어 :
    최소 {0} 단어를 입력하십시오.
  • 영숫자 :
    문자, 숫자, 공백 또는 밑줄 만 입력하십시오
  • validate-identifier :
    유효한 URL 키를 입력하십시오 (예 : "example-page", "example-page.html"또는 "anotherlevel / example-page").
  • validate-street :
    이 필드에는 문자 (az 또는 AZ), 숫자 (0-9), 공백 및 "#"만 사용하십시오.
  • validate-zip-international :
    유효한 우편 번호를 입력하십시오.
  • 유효 날짜 :
    유효한 날짜를 입력하십시오.
  • 0보다 큰 검증 :
    이 필드에 0보다 큰 숫자를 입력하십시오.
  • 유효 숫자 :
    이 필드에 유효한 숫자를 입력하십시오.
  • validate-ssn :
    유효한 주민등록번호를 입력하십시오 (예 : 123-45-6789).
  • 음수가 아님 :
    이 필드에 양수를 입력하십시오.
  • validate-max-size :
    업로드하려는 파일이 최대 파일 크기 제한을 초과합니다.
  • validate-fax :
    유효한 팩스 번호를 입력하십시오 (예 : 123-456-7890).
  • validate-if-tag-script-exist :
    SRC 속성 또는 적절한 컨텐츠가 포함 된 태그 SCRIPT를 사용하여 문서에 JavaScript를 포함 시키십시오.
  • min_text_length :
    {0} 이상의 기호를 입력하십시오.
  • validate-date-au :
    이 날짜 형식을 사용하십시오 : dd / mm / yyyy. 예를 들어 2006 년 3 월 17 일의 17/03/2006입니다.
  • mobileUK :
    유효한 휴대 전화 번호를 지정하십시오
  • 기본-펑크
    문자 : 문자 또는 문장 부호 만 사용하십시오
  • validate-number-range :
    값이 지정된 범위 내에 있지 않습니다.
  • phoneUS :
    유효한 전화 번호를 지정하십시오
  • date_range_max :
    날짜가 지정된 범위 내에 있지 않습니다.
  • validate-range :
    값이 지정된 범위 내에 있지 않습니다.
  • vinUS :
    지정된 차량 식별 번호 (VIN)가 유효하지 않습니다.
  • 범위 단어 :
    {0}과 {1} 단어 사이에 입력하십시오.
  • validate-zip-us :
    유효한 우편 번호를 입력하십시오 (예 : 90602 또는 90602-1234).
  • 검증 - 전자 우편 :
    쉼표로 구분 유효한 이메일 주소를 입력 해주세요. 예를 들어, johndoe@domain.com, johnsmith@domain.com입니다.
  • validate-css-length :
    유효한 CSS 길이를 입력하십시오 (예 : 100px, 77pt, 20em, .5ex 또는 50 %).
  • 우편 번호 범위 :
    우편 번호는 902xx-xxxx ~ 905-xx-xxxx 범위에 있어야합니다.
  • validate-phoneStrict :
    유효한 전화 번호를 입력하십시오. 예를 들어 (123) 456-7890 또는 123-456-7890입니다.
  • dateNL :
    겔화 데이텀 입력.
  • 글자 만 :
    글자 만
  • max_text_length :
    {0}보다 작거나 같은 기호를 입력하십시오.
  • validate-not-negative-number :
    이 필드에 0 이상의 숫자를 입력하십시오.
  • 페이지 당 값 목록 확인 :
    유효한 값을 입력하십시오 (예 : 10,20,30).
  • 공백
    없음 : 공백 없음
  • validate-state :시
    /도를 선택하십시오.
  • validate-url :
    유효한 URL을 입력하십시오. 프로토콜이 필요합니다 (http : //, https : // 또는 ftp : //).
  • date_range_min :
    날짜가 지정된 범위 내에 있지 않습니다.
  • validate-digits-range :
    값이 지정된 범위 내에 있지 않습니다.
  • 같음보다 큼 :
    {0}보다 크거나 같은 값을 입력하십시오.
  • 비어 있지 않음 :
    빈 값.
  • 0 이상 검증 :
    이 필드에 0 이상의 숫자를 입력하십시오.
  • validate-cc-number :
    유효한 신용 카드 번호를 입력하십시오.
  • validate-emailSender :
    유효한 이메일 주소를 입력하십시오 (예 : johndoe@domain.com).
  • validate-new-password :
    6 자 이상을 입력하십시오. 선행 및 후행 공백은 무시됩니다.
  • validate-customer-password :
    이 필드의 최소 길이는 % 1 기호 이상이어야합니다. 선행 및 후행 공백은 무시됩니다.
  • validate-password :
    6 자 이상을 입력하십시오. 선행 및 후행 공백은 무시됩니다.
  • 덜-같습니다보다에 :
    보다 적은 값을 입력하거나 {0}에 동일 해주십시오.
  • validate-currency-dollar :
    유효한 $ 금액을 입력하십시오. 예를 들어 $ 100.00입니다.
  • time12h :
    00:00 am ~ 12:00 pm 사이에 유효한 시간을 입력하십시오
  • validate-alphanum :
    이 필드에는 문자 (az 또는 AZ) 또는 숫자 (0-9) 만 사용하십시오. 공백이나 다른 문자는 허용되지 않습니다.
  • validate-item-quantity :
    이 파일 확장자 유형을 인식하거나 지원하지 않습니다.
  • validate-code :
    이 필드에는 문자 (az), 숫자 (0-9) 또는 밑줄 (_) 만 사용하십시오. 첫 문자는 문자 여야합니다.
  • email2 :
    유효한 신용 카드 번호를 입력하십시오.
  • 최대 단어 :
    {0} 단어 이하를 입력하십시오.
  • 최소 길이 :
    최소 {0}자를 입력하십시오
  • validate-alpha :
    이 필드에는 문자 (az 또는 AZ) 만 사용하십시오.
  • 패턴 :
    유효하지 않은 형식입니다.
  • 정수 :
    양수 또는 음수가 아닌 10 진수

스크립트 :

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 페이지를 참조하면 양식 아래에 다음 코드가 표시됩니다.

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

그리고 폼의 입력 속성을 확인하면 class새로운 data-validate속성 과 함께 속성 값과 같은 마 젠토 1을 볼 수 있습니다 . 이것은 강화의 기초가 될 수 있습니다.

유효성 검사를위한 키 파일 :


답을위한 Thx. 새로운 속성 data-validate도 발견했지만 어떤 유효성 검사가 가능한지 흥미 롭습니다. 내 경우에는 내가 체크 박스와의 RadioButton 일련의 유효성을 검사 할
ClassMP

magento 2에서 서버 측 유효성 검사를 적용하고 싶습니다 .pls 나에게 링크 나 문서를 공유 할 수 있습니까?
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 Validation에 동일한 요구 사항이 있으며이 코드를 수행했습니다.

먼저 테스트 양식을 설정합니다

<!-- 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 양식 유효성 검사에 대한 JavaScript 유효성 검사를 활성화하려면

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

"공백 없음"옵션이 제대로 작동하지 않습니다 (적어도 Magento 2.1에서). 모든 유형의 "공백"문자에서 오류 메시지를 트리거합니다. "test me"및 "test me"값은 동일한 오류를 반환합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.