Как переопределить модель списка желаний magento 2? - PullRequest
0 голосов
/ 08 мая 2019

Я работаю над модулем, в котором мне нужно переопределить модель wishlist.php , но я не могу выдать ошибку, когда пытаюсь переопределить ее. Я сообщаю вам ошибку, но вы можете сказать мне, почему она не переопределена?

Путь модели, которую я хочу переопределить:

vendor/magento/module-wishlist/Model/Wishlist.php

Ошибка, с которой я сталкиваюсь:

Неустранимая ошибка: Uncaught TypeError: Аргумент 1 передан Magento \ предпочтения \ Model \ ResourceModel \ Item \ Collection :: addWishlistFilter () должен быть экземпляром Magento \ Wishlist \ Model \ Wishlist, экземпляром Мой \ Multiwishlist \ Model \ Wishlist дан, вызван в /opt/lampp/htdocs/qv3/app/code/My/Multiwishlist/Model/Wishlist.php в строка 375 и определена в /opt/lampp/htdocs/qv3/vendor/magento/module-wishlist/Model/ResourceModel/Item/Collection.php:338 Трассировка стека: # 0 /opt/lampp/htdocs/qv3/app/code/My/Multiwishlist/Model/Wishlist.php(375): Magento \ предпочтения \ Model \ ResourceModel \ Item \ галерею-> addWishlistFilter (Object (My \ Multiwishlist \ Model \ предпочтения)) /opt/lampp/htdocs/qv3/app/code/My/Multiwishlist/Model/Wishlist.php(617): Мой \ Multiwishlist \ Model \ Wishlist-> getItemCollection () # 2 /opt/lampp/htdocs/qv3/vendor/magento/module-wishlist/Block/AbstractBlock.php(243): Мой \ Multiwishlist \ Model \ Wishlist-> getItemsCount () # 3 / Опт / lampp / HTDOCS / qv3 / продавец / Magento / модуль-лист пожеланий / блок / AbstractBl в /opt/lampp/htdocs/qv3/vendor/magento/module-wishlist/Model/ResourceModel/Item/Collection.php по линии 338

1 Ответ

0 голосов
/ 08 мая 2019

Если вы внедряете новую зависимость в расширенный класс, вам нужно вызвать parent :: construct , а затем передать ссылку

namespace My\Multiwishlist\Model\Wishlist;
use Magento\Catalog\Api\ProductRepositoryInterface;
use Magento\Framework\App\ObjectManager;
use Magento\Framework\Exception\NoSuchEntityException;
use Magento\Framework\Serialize\Serializer\Json;
use Magento\Wishlist\Model\ResourceModel\Item\CollectionFactory;
use Magento\Wishlist\Model\ResourceModel\Wishlist as ResourceWishlist;
use Magento\Wishlist\Model\ResourceModel\Wishlist\Collection;

class Wishlist extends Magento\Wishlist\Model\Wishlist {
    /**
     * Cache tag
     */
    const CACHE_TAG = 'wishlist';

    /**
     * Prefix of model events names
     *
     * @var string
     */
    protected $_eventPrefix = 'wishlist';

    /**
     * Wishlist item collection
     *
     * @var \Magento\Wishlist\Model\ResourceModel\Item\Collection
     */
    protected $_itemCollection;

    /**
     * Store filter for wishlist
     *
     * @var \Magento\Store\Model\Store
     */
    protected $_store;

    /**
     * Shared store ids (website stores)
     *
     * @var array
     */
    protected $_storeIds;

    /**
     * Wishlist data
     *
     * @var \Magento\Wishlist\Helper\Data
     */
    protected $_wishlistData;

    /**
     * Catalog product
     *
     * @var \Magento\Catalog\Helper\Product
     */
    protected $_catalogProduct;

    /**
     * @var \Magento\Store\Model\StoreManagerInterface
     */
    protected $_storeManager;

    /**
     * @var \Magento\Framework\Stdlib\DateTime\DateTime
     */
    protected $_date;

    /**
     * @var ItemFactory
     */
    protected $_wishlistItemFactory;

    /**
     * @var CollectionFactory
     */
    protected $_wishlistCollectionFactory;

    /**
     * @var \Magento\Catalog\Model\ProductFactory
     */
    protected $_productFactory;

    /**
     * @var \Magento\Framework\Math\Random
     */
    protected $mathRandom;

    /**
     * @var \Magento\Framework\Stdlib\DateTime
     */
    protected $dateTime;

    /**
     * @var bool
     */
    protected $_useCurrentWebsite;

    /**
     * @var ProductRepositoryInterface
     */
    protected $productRepository;

    /**
     * @var Json
     */
    private $serializer;


    public function __construct(
        \Magento\Framework\Model\Context $context,
        \Magento\Framework\Registry $registry,
        \Magento\Catalog\Helper\Product $catalogProduct,
        \Magento\Wishlist\Helper\Data $wishlistData,
        ResourceWishlist $resource,
        Collection $resourceCollection,
        \Magento\Store\Model\StoreManagerInterface $storeManager,
        \Magento\Framework\Stdlib\DateTime\DateTime $date,
        ItemFactory $wishlistItemFactory,
        CollectionFactory $wishlistCollectionFactory,
        \Magento\Catalog\Model\ProductFactory $productFactory,
        \Magento\Framework\Math\Random $mathRandom,
        \Magento\Framework\Stdlib\DateTime $dateTime,
        ProductRepositoryInterface $productRepository,
        $useCurrentWebsite = true,
        /* your injecting class */
        array $data = [],
        Json $serializer = null
    ) {

        parent::__construct($context, $registry, $resource, $resourceCollection, $data, $useCurrentWebsite,$productRepository,$catalogProduct,$wishlistData,$storeManager,$date,$wishlistItemFactory,$wishlistCollectionFactory,$productFactory,$mathRandom,$dateTime,);
        $this->serializer = $serializer ?: ObjectManager::getInstance()->get(Json::class);
    /* initialize the parameter */
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...