Magento2: переопределить основной файл JS - PullRequest
0 голосов
/ 23 апреля 2019

Я пытаюсь переопределить файл js в кассе magento2.

Я хочу переопределить /vendor/magento/module-checkout/view/frontend/web/js/view/form/element/email.js.

Итак, я скопировал файл из моего модуля в: /app/code/GMyself/Test/view/frontend/web/js/view/form/element/email.js

Я сделал небольшое изменение в /app/code/GMyself/Test/view/frontend/web/js/view/form/element/email.js:

        /**
     * Callback on changing email property
     */
    emailHasChanged: function () {
        var self = this;

        clearTimeout(this.emailCheckTimeout);

        if (self.validateEmail()) {
            quote.guestEmail = self.email();
            checkoutData.setValidatedEmailValue(self.email());
            $.cookie("checkoutemail", self.email()); // <--- this is the change
        }
        this.emailCheckTimeout = setTimeout(function () {
            if (self.validateEmail()) {
                self.checkEmailAvailability();
            } else {
                self.isPasswordVisible(false);
            }
        }, self.checkDelay);

        checkoutData.setInputFieldEmailValue(self.email());
    },

Другие части файла не изменены.

Затем я создал /app/code/GMyself/Test/view/frontend/requirejs-config.js:

var config = {
    map: {
        '*':
            {
                'Magento_Checkout/js/view/form/element/email.js':'GMyself_Test/js/view/form/element/email.js'
            }
    }
};

Я выполнил следующие команды в этом порядке после внесения изменений в код или переустановки модуля:

sudo mv pub/static pub/static_backup_`date +%Y%m%d_%H%m%S`
sudo /opt/local/bin/php71  -d memory_limit=4G ./bin/magento cache:flush
sudo /opt/local/bin/php71  -d memory_limit=4G ./bin/magento setup:upgrade;
sudo /opt/local/bin/php71  -d memory_limit=4G ./bin/magento cache:flush
sudo /opt/local/bin/php71  -d memory_limit=4G ./bin/magento setup:di:compile

Мой Magento находится в режиме разработчика, поэтому мне не нужно делать setup:static-content:deploy. Но я также попытался с помощью команды deploy (с опцией -f).

Файл генерируется в pub/static/frontend/Magento/luma/en_US/GMyself_Test/js/view/form/element/email.js.

При оформлении покупки загружается оригинальный файл, мой собственный email.js не загружается и отсутствует в локальных ресурсах моего браузера (как я проверял в моей Chrome Dev-Console). Глобальный сгенерированный requirejs-config.js, который загружает мой chrome, содержит записи, которые я сделал в моем /app/code/GMyself/Test/view/frontend/requirejs-config.js. У меня нет ошибок в консоли браузера.

В качестве небольшого теста я также попытался переопределить /vendor/magento/module-checkout/view/frontend/web/js/checkout-data.js следующей записью в requirejs-config.js:

var config = {
    "map": {
        '*':
            {
                checkoutData: 'GMyself_Test/js/checkout-data.js'
            }
    }
};

checkout-data.js был обнаружен здесь: /app/code/GMyself/Test/view/frontend/web/js/checkout-data.js.

Результат был таким же, как и в файле email.js.

...