System.xml में कस्टम फ़ील्ड सत्यापन


9

मैं magento2 प्लगइन विकसित कर रहा हूं (मैं magento2 में नया हूं), और मैं system.xml में क्षेत्र सत्यापन के साथ एक समस्या में भाग गया। मैं लंबे समय से खोज रहा हूं और जवाब नहीं मिला। मैंने एक नया फ़ील्ड जोड़ा है, लेकिन मुझे इस फ़ील्ड को regex का उपयोग करके सत्यापित करना होगा। मैंने देखा कि कुछ डिफ़ॉल्ट सत्यापन है लेकिन मुझे कस्टम एक की आवश्यकता है, क्या सत्यापनकर्ता के लिए एक नया सत्यापन नियम जोड़ने का कोई तरीका है?


1
इस पर आपको किस प्रकार का सत्यापन करने की आवश्यकता है?
धीरेन वसोया

जवाबों:


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 / देखें / 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 / देखें / 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>

अब आप अपने सत्यापनकर्ता को अपने 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
यह स्वीकृत उत्तर होना चाहिए। बहुत अधिक पूरी तरह से।
एतान येहुदा
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.