System.xml dosyasında özel alan doğrulaması


9

Magento2 eklentisini geliştiriyorum (magento2'de biraz yeniyim) ve system.xml'deki alanın doğrulanmasıyla ilgili bir sorunla karşılaştım. Uzun zamandır araştırıyorum ve cevabı bulamadım. Yeni bir alan ekledim ama regex kullanarak bu alanı doğrulamam gerekiyor. Bazı varsayılan doğrulama olduğunu gördüm ama özel bir ihtiyacım var, doğrulayıcı için yeni bir doğrulama kuralı eklemek için herhangi bir yolu var mı?


1
bunun için ne tür bir doğrulama yapmanız gerekir?
Dhiren Vasoya

Yanıtlar:


4

Temel olarak, özel doğrulama yönteminizi kaydetmeniz ve system.xmldosyadaki alanınız için kullanmanız gerekir .

Doğrulama yönteminizi tanımlayın:

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.'
);

Ve alanınız için kullanın system.xml:

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

Magento 2 çekirdek kodunda "validator.addMethod" ifadesini arayın, orada daha karmaşık kullanım durumlarını gösteren bir grup örnek vardır.


Bu şekilde kullanmayı deniyorum ama çalışmıyor magento.stackexchange.com/questions/262645/…
Chirag Patel

9

@Wojtek Naruniec'in yazdığı gibi, bir javascript dosyasında kendi özel doğrulama yönteminizi oluşturmanız ve system.xml dosyasındaki modül yapılandırma alanında kullanmanız gerekir .

Diyelim ki alanınız:

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

ve alan uzunluğunu (tam olarak 6 karakter) kontrol etmek istersiniz.

Javascript dosyanızı oluşturun,

tedarikcifirmadi / modulename / view / adminhtml / web / js / validation.js

Örneğin:

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'));
    }
);

sonra javascript dosyasını yönetici yapılandırma sayfasına yükleyin, böylece dosyayı oluşturmanız gerekir

tedarikcifirmadi / modulename / view / adminhtml / düzeni / 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>

Şimdi ekleyerek doğrulayıcı kullanabilirsiniz <validate>içine etiketi <field>sizin etiketine system.xml dosyası:

<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
Bu kabul edilen cevap olmalı. Çok daha kapsamlı.
Ethan Yehuda
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.