Ошибка в руководстве по плагину "Удалить компонент"


Я пытаюсь следовать этому руководству "Удалить компонент" , Но получаю следующую ошибку:

"Uncaught Error: Cannot use object of type Magento\Checkout\Block\Checkout\LayoutProcessor\Interceptor as array in".

Код плагинов:

class removeCheckoutComponent {
    public function aroundProcess($jsLayout) {
        unset($jsLayout['components']['checkout']['children']['steps']['%path_to_target_node%']); 
        return $jsLayout;
    }
}

Почему это не работает? Конечный результат, которого я пытаюсь достичь, - удалить выбор города со страницы оформления заказа.

Author: user3748173, 2016-12-03

1 answers

Проблема в том, что вы не используете правильную подпись. Вокруг плагинов следуйте этой подписи:

function aroundMethod ($subject, \Closure $proceed, $arg1, $arg2, etc...)

Где $subject - экземпляр класса, метод которого перехватывается, $proceed - делегат метода, а затем следуют аргументы для вызова метода.

Для вашего варианта использования у вас должно быть:

function aroundProcess (\Magento\Checkout\Block\Checkout\LayoutProcessor $subject, \Closure $proceed, $jsLayout)
{
    unset($jsLayout['components']['checkout']['children']['steps']['%path_to_target_node%']);
    return $proceed($jsLayout);
}

Более подробная информация здесь: http://devdocs.magento.com/guides/v2.0/extension-dev-guide/plugins.html

 3
Author: Aaron Allen, 2016-12-04 08:59:06