Плагин Magento2 вокруг слушателя не работает
Я хочу переопределить метод из компонента пользовательского интерфейса, который задает значения фильтра. Мой код плагина
<?php
namespace MyVendor\MyModule\Plugins\DataProvider\Product;
class GiftProvider
{
public function aroundAddFilter(
$subject,
\Closure $proceed,
\Magento\Framework\Api\Filter $filter
)
{
if (isset($subject->addFilterStrategies[$filter->getField()])) {
$subject->addFilterStrategies[$filter->getField()]
->addFilter(
$subject->getCollection(),
$filter->getField(),
[$filter->getConditionType() => $filter->getValue()]
);
} else {
$abstractProvider::addFilter($filter);
}
if(!isset($subject->addFilterStrategies['is_gift']))
{
$subject->addFilterStrategies['is_gift']
->addFilter(
$subject->getCollection(),
'is_gift',
[$filter->getConditionType() => 1]);
}
return $subject;
}
}
Etc/adminhtml/di.xml
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
<type name="Magento\Catalog\Ui\DataProvider\Product\ProductDataProvider">
<plugin name="gift_data_provider_around_plugin" type="MyVendor\MyModule\Plugins\DataProvider\Product\GiftProvider" sortOrder="1500" />
</type>
</config>
Ajax возвращает
Fatal 500 Internal Server Error
И выводится сообщение, в котором говорится:
"Attention
Something went wrong."
Что пошло не так, так это то, что ответ ajax пуст, когда я его проверяю.
В чем моя ошибка, возможно ли это?
1
Author: Lachezar Raychev, 2016-02-28
1 answers
Параметры в окружающем фильтре плагина должны быть такими
public function aroundAddFilter(
\Magento\Catalog\Ui\DataProvider\Product\ProductDataProvider $subject,
\Closure $proceed,
\Magento\Framework\Api\Filter $filter,
\Magento\Ui\DataProvider\AbstractDataProvider $abstractProvider
)
{
//body code
return $proceed($abstractProvider);
}
Надеюсь, это поможет вам
1
Author: mrtuvn, 2016-02-28 17:04:28