Magento2插件围绕侦听器无效
题
我想从UI组件覆盖方法,该方法设置过滤器值。 我的插件代码
<?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的响应是空的。
我的错误在哪里,这是可能的吗?
解决方案
CallinDFilter中的参数必须具有此
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);
}
.
希望这将帮助您