Ошибка "Не удается прочитать свойство 'Indexedoptions'" при удалении поля компании (Удалить поле проверки)


Мне нужно удалить поле компании со страницы оформления заказа. Я пытаюсь следовать этому руководству "Удалить компонент". Но я получаю следующую ошибку:

Uncaught TypeError: Cannot read property 'indexedOptions' of undefined(…) region.js:59 

Мой файл плагинов:

public function aroundProcess(\Magento\Checkout\Block\Checkout\LayoutProcessor $subject, \Closure $proceed, $jsLayout) {
    unset($jsLayout['components']['checkout']['children']['steps']['children']['shipping-step']
            ['children']['shippingAddress']['children']['shipping-address-fieldset']['children']['company']);
    return $jsLayout;
}

Кто-нибудь может объяснить мне, пожалуйста, что я делаю не так?

Author: user3748173, 2016-12-04

1 answers

Я нашел решение на этой странице https://github.com/magento/magento2/issues/4425

И рабочий код:

public function aroundProcess(\Magento\Checkout\Block\Checkout\LayoutProcessor $subject, \Closure $proceed, $jsLayout) {
    $ret = $proceed($jsLayout);
    unset($ret['components']['checkout']['children']['steps']['children']['shipping-step']
            ['children']['shippingAddress']['children']['shipping-address-fieldset']['children']['company']);
    return $ret;
}

Из этой документации по плагину Я также обнаружил проблему: "Также стоит отметить, что вы несете ответственность за пересылку аргументов из плагина в вызываемый объект "продолжить"". Я добавляю подпись функции плагина из ответа @Aaron Allen в мой предыдущий пост , чтобы было понятнее всем, кто это было бы необходимо.

function aroundMethod ($subject, \Closure $proceed, $arg1, $arg2, etc...)
 1
Author: user3748173, 2017-04-13 12:55:02