在 Shopware 5.4 中,我能够捕捉到变化的事件:
- 订单状态
- 支付状态
但我需要捕捉以下事件:
- 更改订单项目,例如替换、删除或添加
- 送货和/或账单地址的变化
- 支付信息的变化,如支付网关等。
最好的解决方案是添加一个Doctrine\Common\EventSubscriber
: 带有 Symfony DI 标签doctrine.event_subscriber
。
这将通过后端或 api 解决所有更改,因为它们是基于教义的。没有教义的变化很难追踪。
<?php
namespace <your namespace>;
use Doctrine\Common\EventSubscriber;
use Doctrine\ORM\Event\LifecycleEventArgs;
use Doctrine\ORM\Events;
use Shopware\Models\Order\Detail;
class Doctrine implements EventSubscriber
{
/**
* @inheritDoc
*/
public function getSubscribedEvents()
{
return [
Events::preRemove,
Events::postUpdate
];
}
/**
* @param LifecycleEventArgs $args
*/
public function preRemove(LifecycleEventArgs $args)
{
if($args->getEntity() instanceof Detail)
{
// order detail has removed
}
}
/**
* @param LifecycleEventArgs $eventArgs
*/
public function postUpdate(LifecycleEventArgs $eventArgs)
{
$enity = $eventArgs->getEntity();
if ($enity instanceof Detail) {
// order detail has changed
}
}
}