Как переопределить Magento \ Каталог \ Модель \ Слой \ FilterList в magento 2.2.3 - PullRequest
0 голосов
/ 24 апреля 2018

Переопределите Magento\Catalog\Model\Layer\FilterList в Magento 2.2.3 с помощью плагина. Эта ошибка пришла

PHP сообщение: PHP фатальная ошибка: Uncaught TypeError: Аргумент 2 передан в #### \ Plugin \ Model \ Layer \ FilterList :: aroundGetFilters () должны реализовать интерфейс Magento \ Каталог \ Модель \ Слой \ FilterableAttributeListInterface, экземпляр Данного закрытия, вызванного в

/magento/framework/Interception/Interceptor.php в строке 135 и определено в #### / Plugin / Model / Layer / FilterList.php: 70

Настройки для этого файла не работают.

Ответы [ 2 ]

0 голосов
/ 26 июля 2018

Использование virtual_type

Один раз Проверьте основной файл передачи аргументов di.xml

.... / имя_модуля / extensionmodule / и т.д. / интерфейс / di.xml

 <virtualType name="categoryFilterList" type="ModuleName\ExtensionModule\Model\Layer\FilterList">
    <arguments>
    Your Passing Arguments(same as existing core file - di.xml(core module) passing arguments ).

    </arguments>
</virtualType>

.... / имя_модуля / extensionmodule / Model \ Layer

<?php

    namespace ModuleName\ExtensionModule\Model\Layer;

    /**
     * Override FilterList Class
     */
    class FilterList extends \Magento\Catalog\Model\Layer\FilterList
    {
        ......Your Code Here......
    }
    ?>
0 голосов
/ 25 апреля 2018

Вы не можете переопределить класс с помощью плагина.Если вы хотите переопределить класс, просто используйте следующий код в вашем di.xml

<preference for="Magento\Catalog\Model\Layer\FilterList" type="NAMESPACE\YOUR_MODULE\Model\Layer\FilterList" />

. Если это не работает, перейдите в родительский класс (Magento \ Catalog \ Model \ Layer \ FilterList) и проверьтени одного из компонентов, которые вы отправляете из функции __contruct вашего FilterList.php вашего модуля.Передайте одинаковое количество аргументов в том же порядке вашему родительскому классуЭто будет работать.

...