sylius-resource - Sylius:如何基于实体实现 SyliusResourceBundle 创建监听器
问题描述
我是 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_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 }
谢谢。
推荐阅读
- node.js - 我该如何解决关于路径验证的错误:'body
- python - 在 MacBook Air M1 上安装 Pygame
- python - 如何在 Pyqt5 中设置 QTableWidget 的样式
- ios - App Clips - 通过网络延迟加载图像以减小大小
- gitlab - GitLab 作业允许在某些退出代码上失败
- python-2.7 - 来自行的Python条带模式匹配
- tizen - 使用 Tizen Studio 部署问题 - 证书错误 -14
- django - 如何创建 OneToMany 关系?
- android - Android Studio 无法检测到 Flutter 项目的项目结构
- node.js - 带有使用 NODEJS 的功能的问题 Stripe