Пользовательская проверка проверки - Два поля должны иметь одинаковое значение: M2


Я прочитал этот URL-адрес для проверки equalTo.

У меня есть добавить пользовательское поле с помощью LayoutProcessor.php файл и установите проверку следующим образом:

'validation' => ['validate-no-empty' => false,'validate-password' => true,'min_text_len‌​gth' => 7, 'max_text_length' => 20,],

Все вышеперечисленные проверки работают хорошо, за исключением "equalTo".

Я попробовал так:, "equalTo" => "#fieldname" но все еще не работает, кто-нибудь может мне помочь, как я могу использовать "Равную" проверку в LayoutProcessor.php файл?

Мой код:

<?php
namespace Packeg\Modulename\Plugin\Checkout\Model\Checkout;


class LayoutProcessor
{

    public function afterProcess(
        \Magento\Checkout\Block\Checkout\LayoutProcessor $subject,
        array  $jsLayout
    ) {


        $objectManager = \Magento\Framework\App\ObjectManager::getInstance();
        $customerSession = $objectManager->get('Magento\Customer\Model\Session');
        if(!$customerSession->isLoggedIn()) {




        $jsLayout['components']['checkout']['children']['steps']['children']['shipping-step']['children']
        ['shippingAddress']['children']['before-shipping-method-form']['children']['password_1'] = [
            'component' => 'Magento_Ui/js/form/element/abstract',
            'config' => [
                'customScope' => 'shippingAddress',
                'template' => 'ui/form/field',
                'elementTmpl' => 'ui/form/element/password',
                'id' => 'password_1'
            ],
            'dataScope' => 'shippingAddress.password_1',
            'label' => 'Create Password',
            'provider' => 'checkoutProvider',
            'visible' => true,
            'validation' => ['validate-no-empty' => false,'validate-password' => true,'min_text_len‌​gth' => 7, 'max_text_length' => 20,],
            'sortOrder' => 250,
            'id' => 'password_1'
        ];

        $jsLayout['components']['checkout']['children']['steps']['children']['shipping-step']['children']
        ['shippingAddress']['children']['before-shipping-method-form']['children']['password_2'] = [
            'component' => 'Magento_Ui/js/form/element/abstract',
            'config' => [
                'customScope' => 'shippingAddress',
                'template' => 'ui/form/field',
                'elementTmpl' => 'ui/form/element/password',
                'id' => 'password_2'
            ],
            'dataScope' => 'shippingAddress.password_2',
            'label' => 'Re-enter Password',
            'provider' => 'checkoutProvider',
            'visible' => true,
            'validation' => ['validate-no-empty' => true, 'validate-password2'=> true , "min_text_len‌​gth" => 7, "max_text_length" => 20],
            'sortOrder' => 255,
            'id' => 'password_2'
        ];



    }
        return $jsLayout;
    }
}
Author: kunj, 2018-07-09

1 answers

Попробуйте это:

$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
        $customerSession = $objectManager->get('Magento\Customer\Model\Session');
        if(!$customerSession->isLoggedIn()) {


            $jsLayout['components']['checkout']['children']['steps']['children']['shipping-step']['children']
            ['shippingAddress']['children']['before-shipping-method-form']['children']['password_1'] = [
                'component' => 'Magento_Ui/js/form/element/abstract',
                'config' => [
                    'customScope' => 'shippingAddress',
                    'template' => 'ui/form/field',
                    'elementTmpl' => 'ui/form/element/password',
                    'id' => 'password_1',

                ],
                'dataScope' => 'shippingAddress.password_1',
                'label' => 'Create Password',
                'provider' => 'checkoutProvider',
                'visible' => true,
                'validation' => ['validate-no-empty' => false, 'validate-password' => true, 'min_text_len‌​gth' => 7, 'max_text_length' => 20,],
                'sortOrder' => 250,
                'id' => 'password_1'
            ];

            $jsLayout['components']['checkout']['children']['steps']['children']['shipping-step']['children']
            ['shippingAddress']['children']['before-shipping-method-form']['children']['password_2'] = [
                'component' => 'Magento_Ui/js/form/element/abstract',
                'config' => [
                    'customScope' => 'shippingAddress',
                    'template' => 'ui/form/field',
                    'elementTmpl' => 'ui/form/element/password',
                    'id' => 'password_2'
                ],
                'dataScope' => 'shippingAddress.password_2',
                'label' => 'Re-enter Password',
                'provider' => 'checkoutProvider',
                'visible' => true,
                'validation' => ['validate-no-empty' => true, 'validate-password2' => true, "min_text_len‌​gth" => 7, "max_text_length" => 20,'equalTo'=>'[name="password_1"]'],
                'sortOrder' => 255,
                'id' => 'password_2'
            ];

Я добавил это 'equalTo'=>'[name="password_1"]' в

 0
Author: kunj, 2018-07-09 11:53:47