Перевірка спеціального поля в 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>

Шукайте "validator.addMethod" в основному коді Magento 2, тут є маса прикладів, що показують складніші випадки використання.


Я намагаюся використовувати цей спосіб, але не працюю magento.stackexchange.com/questions/262645/…
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 символів).

Створіть свій файл JavaScript,

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

потім завантажте файл JavaScript на сторінку конфігурації адміністратора, щоб вам довелося генерувати файл

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>

Тепер ви можете використовувати <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
Це має бути прийнятою відповіддю. Набагато ретельніше.
Етан Єгуда
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.