0

在 Shopware 5.4 中,我能够捕捉到变化的事件:

  • 订单状态
  • 支付状态

但我需要捕捉以下事件:

  • 更改订单项目,例如替换、删除或添加
  • 送货和/或账单地址的变化
  • 支付信息的变化,如支付网关等。
4

1 回答 1

0

最好的解决方案是添加一个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
        }
    }

}
于 2021-07-08T20:57:18.480 回答