我为目录产品控制器的保存操作创建了拦截器
<type name="Magento\Catalog\Controller\Adminhtml\Product\Save">
<plugin name="ricky_catalog_save_product"
type="Ricky\Catalog\Plugin\Product\Save" sortOrder="10"
/>
</type>
我的插件类别在下面
namespace Ricky\Catalog\Plugin\Product;
class Save {
public function afterExecute(
\Magento\Catalog\Controller\Adminhtml\Product\Save $subject,
$result)
{
$productId = $subject->productId; // This is not working
/** $productId is provided in excute method in Save class
in Magento\Catalog\Controller\Adminhtml\Product\Save **/
}
}
由于某些原因我必须使用插件(拦截器设计模式),我知道我可以通过使用catalog_product_save_after事件的观察者来获取新创建的产品ID。但是请提供插件解决方案。
感谢帮助:)
答案 0 :(得分:0)
如果要访问属性$ subject-> productId,则意味着应在类
中定义它\Magento\Catalog\Controller\Adminhtml\Product\Save.
没有定义名称为 productId 的类变量。
您可以覆盖控制器并定义另一个公共类变量
public $productId;
并在execute()方法中的某处分配产品ID:-
$this->productId = $productId;
现在您的插件中将其用作:-
$subject->productId
经过测试,正在工作.. !!
答案 1 :(得分:0)
您可以通过这种方式获取产品ID
$productId = $subject->getRequest()->getParam('id');
希望这会有所帮助!快乐编码