/ / Magento 2 след като приставката GetSpecialPrice няма да промени специалната цена в WEBAPI - плъгини, модул, magento2

Magento 2 afterGetSpecialPrice плъгин няма да промени специалната цена в WEBAPI - плъгини, модули, magento2

Въведох приставката magento 2 за промяна на специална цена за някои продукти програмно. Това беше успех за интерфейса, но все пак в webapi получавам оригинална специална цена.

di.xml

        <?xml version="1.0" ?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
<preference for="VendorModuleApiPromotionManagementInterface" type="VendorModuleModelPromotionManagement"/>

<type name="MagentoCatalogModelProduct">
<plugin name="change_product" type="VendorModulePluginProduct" sortOrder="1" disabled="false"/>
</type>

</config>

VendorModulePluginProduct.php

afterGetSpecialPrice () не се извиква, когато се използва webapi

.....
public function afterGetSpecialPrice(MagentoCatalogModelProduct $subject, $result)
{
if(isset($this->data)){
return $this->data["special_price"]; // $60.00
}
return $result; // $70.00
}
.....

резултат на първа страница: $ 60.00, резултат в webapi: $ 70.00 (оригинална специална цена)

Каква може да е причината?

Отговори:

0 за отговор № 1

според кода на пробата magento2-проби необходимо е да използвате метода afterGetList в класа на плъгините.

di.xml

<type name="MagentoCatalogApiProductRepositoryInterface">
<plugin name="change_special_price" type="VendorModulePluginRepository"/>
</type>

VendorModulePluginRepository.php

<?php
namespace VendorModulePlugin;
class Repository
{
public function afterGetList(MagentoCatalogApiProductRepositoryInterface $subject,MagentoFrameworkApiSearchResults $searchResult) {
foreach ($searchResult->getItems() as $product) {
$product->setData("special_price",60.0000); //custom special price
}
return $searchResult;
}
}