【问题标题】:Sylius: How to create listener base on Entity Implementing SyliusResourceBundleSylius:如何基于实体实现 SyliusResourceBundle 创建监听器
【发布时间】:2019-07-10 17:04:16
【问题描述】:

我是 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);     
    }
}

但是当我向卡中添加新产品时,什么也没有发生。我想念什么?可能是我不太了解概念,或者我以错误的方式做事。请帮帮我。

【问题讨论】:

    标签: sylius-resource


    【解决方案1】:

    我找到了解决问题的方法。事实上,当将产品添加到卡片路径时,sylius_shop_ajax_cart_add_item 是通过 post 方法调用的。执行 bin/console debug:router 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 }
    

    谢谢。

    【讨论】:

      猜你喜欢
      • 2019-08-23
      • 2020-07-25
      • 2011-08-21
      • 2011-02-02
      • 2018-12-11
      • 2014-04-08
      • 2014-07-08
      • 2013-06-30
      • 1970-01-01
      相关资源
      最近更新 更多