การตรวจสอบฟิลด์ที่กำหนดเองใน system.xml


9

ฉันกำลังพัฒนาปลั๊กอิน magento2 (ฉันค่อนข้างใหม่ใน magento2) และฉันพบปัญหาในการตรวจสอบความถูกต้องของฟิลด์ใน system.xml ฉันค้นหามานานแล้วและไม่พบคำตอบ ฉันเพิ่มเขตข้อมูลใหม่ แต่ฉันต้องตรวจสอบความถูกต้องของเขตข้อมูลนี้โดยใช้ regex ฉันเห็นว่ามีการตรวจสอบเริ่มต้นบางอย่าง แต่ฉันต้องการกำหนดเองมีวิธีใดบ้างที่จะเพิ่มกฎการตรวจสอบความถูกต้องใหม่ให้กับเครื่องมือตรวจสอบ


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>

ค้นหา "validator.addMethod" ในรหัสหลักของ Magento 2 มีตัวอย่างมากมายที่แสดงกรณีการใช้ที่ซับซ้อนมากขึ้น


ฉันลองใช้วิธีนี้ แต่ไม่ได้ทำงาน magento.stackexchange.com/questions/262645/…
Chirag Patel

9

ในขณะที่ @Wojtek Naruniec เขียนคุณต้องสร้างวิธีการตรวจสอบที่กำหนดเองของคุณเองในไฟล์ javascript และใช้ในฟิลด์การกำหนดค่าโมดูลของคุณในไฟล์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 / เว็บ / 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 / รูปแบบ / 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>

ตอนนี้คุณสามารถใช้ตัวตรวจสอบความถูกต้องเพิ่ม<validate>แท็กใน<field>แท็กของไฟล์system.xmlของคุณ:

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