system.xml의 사용자 정의 필드 유효성 검사


9

magento2 플러그인 (magento2의 새로운 기능)을 개발 중이며 system.xml의 필드 유효성 검사에 문제가 발생했습니다. 나는 오랫동안 찾고 있었고 답을 찾지 못했습니다. 새 필드를 추가했지만 정규식을 사용하여이 필드의 유효성을 검사해야합니다. 몇 가지 기본 유효성 검사가 있지만 사용자 지정이 필요하다는 것을 알았습니다. 유효성 검사기에 새 유효성 검사 규칙을 추가하는 방법이 있습니까?


1
어떤 유형의 유효성 검사를 수행해야합니까?
Dhiren Vasoya

답변:


4

기본적으로 사용자 지정 유효성 검사 방법을 등록한 다음 system.xml파일 의 필드에 사용해야 합니다.

검증 방법을 정의하십시오.

jQuery.validator.addMethod(
    "validate-custom", 
    function (v) {
        return jQuery.mage.isEmptyNoTrim(v) || /^[1-4]+$/.test(v);
     },
    'Please use digits only (1-4) in this field.'
);

그리고 당신의 분야에 사용하십시오 system.xml:

<validate>validate-number validate-zero-or-greater validate-custom</validate>

Magento 2 핵심 코드에서 "validator.addMethod"를 검색하면 더 복잡한 사용 사례를 보여주는 예제가 많이 있습니다.


나는이 방법을 사용하여 시도했지만 작동하지 magento.stackexchange.com/questions/262645/...
치라 파텔에게

9

@Wojtek Naruniec이 작성하는 것처럼, 자바 스크립트 파일에서 고유 한 사용자 지정 유효성 검사 방법을 만들어 system.xml 파일 의 모듈 구성 필드에서 사용해야 합니다.

필드를 다음과 같이 가정하십시오.

<field id="color" translate="label comment" type="text" sortOrder="3" showInDefault="1" showInWebsite="1" showInStore="1">
    <label>Color</label>
    <comment>Exadecimal value, without #: ex. FFFFFF</comment>
</field>

필드 길이 (정확히 6 자)를 확인하고 싶습니다.

자바 스크립트 파일을 작성하십시오.

vendorName / moduleName / view / adminhtml / web / js / validation.js

예를 들면 다음과 같습니다.

require([
    'jquery',
    'mage/translate',
    'jquery/validate'],
    function($){
        $.validator.addMethod(
            'validate-exadecimal-color-length', function (v) {
                return (v.length == 6);
            }, $.mage.__('Field must have length of 6'));
    }
);

그런 다음 관리자 구성 페이지에서 자바 스크립트 파일을로드하면 파일을 생성해야합니다

vendorName / moduleName / view / adminhtml / layout / adminhtml_system_config_edit.xml

<?xml version="1.0"?>
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
    <head>
        <link src="vendorName_moduleName::js/validation.js"/>
    </head>
</page>

이제 유효성 검사기를 사용 하여 system.xml 파일 의 <validate>태그에 <field>태그를 추가 할 수 있습니다 .

<field id="color" translate="label comment" type="text" sortOrder="3" showInDefault="1" showInWebsite="1" showInStore="1">
    <label>Color</label>
    <validate>validate-exadecimal-color-length</validate>
    <comment>Exadecimal value, without #: ex. FFFFFF</comment>
</field>

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