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']
и присвоить ему значение.
1
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