Magento 2: Изменение основных функций наблюдателя


Я пытаюсь добавить новое значение "merchant_id" в

\module-reports\Observer\CatalogProductViewObserver.php

Как я могу переопределить save, добавив в него новые данные для сохранения

  public function execute(\Magento\Framework\Event\Observer $observer)
    {
        $productId = $observer->getEvent()->getProduct()->getId();

        $viewData['product_id'] = $productId;
        $viewData['store_id']   = $this->_storeManager->getStore()->getId();
        if ($this->_customerSession->isLoggedIn()) {
            $viewData['customer_id'] = $this->_customerSession->getCustomerId();
        } else {
            $viewData['visitor_id'] = $this->_customerVisitor->getId();
        }

        $this->_productIndxFactory->create()->setData($viewData)->save()->calculate();

        $this->eventSaver->save(\Magento\Reports\Model\Event::EVENT_PRODUCT_VIEW, $productId);
    } 

Мне нужно добавить $viewData['merchant_id'] и присвоить ему значение.

Author: Vishwas Bhatnagar, 2016-11-12

1 answers

Есть два варианта:

1) Отключите наблюдателя по умолчанию и добавьте нашего пользовательского наблюдателя - events.xml:

 <?xml version="1.0"?>
    <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Event/etc/events.xsd">
        <event name="catalog_controller_product_view">
            <observer name="reports" disabled="true"/> <!--Disable default observer-->
            <!--Add our custom observer-->
            <observer name="reports_custom" 
              instance="Vendor\Module\Observer\CatalogProductViewObserver" />
        </event>
    </config>

2) Может переопределять - предпочтения - di.xml

<preference for="Magento\Reports\Observer\CatalogProductViewObserver" type="Vendor\Module\Observer\CatalogProductViewObserver" />
 2
Author: Khoa TruongDinh, 2016-11-13 13:55:01