我是sylius工作的初学者,我想先对订单项进行调整,然后再将其保留在数据库中。因此,我根据文档https://docs.sylius.com/en/1.5/book/architecture/events.html
中所说的sylius.order_item.pre_create事件创建了一个侦听器。所有Sylius捆绑软件都使用SyliusResourceBundle,例如,该格式具有一些内置事件
sylius.resource.pre_create
她是我的监听器配置
services:
app.listener.order_item:
class: App\EventListener\OrderItemListener
tags:
- { name: kernel.event_listener, event: sylius.order_item.pre_create, method: onSyliusOrderItemPreCreate }
她是我的听众课
<?php
namespace App\EventListener;
use Symfony\Component\EventDispatcher\GenericEvent;
use Sylius\Component\Core\Model\ShopUserInterface;
use App\Entity\Order\OrderItem;
use App\Entity\Order\Order;
use App\Entity\Order\Adjustement;
use App\Repository\Channel\ChannelPricingRepository;
use Sylius\Component\Channel\Context\ChannelContextInterface;
use Sylius\Component\Order\Factory\AdjustmentFactoryInterface;
class OrderItemListener
{
public function onSyliusOrderItemPreCreate(GenericEvent $event)
{
var_dump(''); die;
$orderItem = $event->getSubject();
Assert::isInstanceOf($orderItem, OrderItem::class);
}
}
但是,当我向卡中添加新产品时,什么也没有发生。我想念什么?可能是我不太了解概念,或者我以错误的方式制造东西。请帮助我。
答案 0 :(得分:0)
我已经找到解决问题的方法。实际上,将产品添加到卡路线 sylius_shop_ajax_cart_add_item 时,是通过 post 方法调用的。进行 bin /控制台调试:路由器sylius_shop_ajax_cart_add_item 表明Sylius \ Bundle \ OrderBundle \ Controller \ OrderItemController :: addAction方法已执行。在这个 $ this-> eventDispatcher-> dispatchPreEvent(CartActions :: ADD,$ configuration,$ orderItem); 中被调用,并且CartActions :: ADD ='add'。 因此,她的事件是 sylius.order_item.pre_add ,而不是我创建的 sylius.order_item.pre_create 。
services:
app.listener.order_item:
class: App\EventListener\OrderItemListener
tags:
- { name: kernel.event_listener, event: sylius.order_item.pre_add, method: onSyliusOrderItemPreAdd }
谢谢。