每当在DrupalCommerce 2X中创建新订单,产品时,我需要能够编写一个获取订单,产品等的插件。但我似乎无法弄清楚商业部门是如何让我这样做的。我没有看到任何可以提供数据的*事件文件。
看起来Commerce希望我创建一个单独的Event Flow插件来添加我想要的步骤,但我似乎无法找到有关实现我自己的事件流的文档。
在创建订单或产品时,您能指导我运行代码的正确途径吗?我在正确的道路上吗?你能指出Events / EventSubscriber Flow开发文档吗?
答案 0 :(得分:1)
在订单完成时,系统调用commerce_order.place.post_transition。所以你需要在结账时创建一个事件。
对过渡做出反应
示例 - 对订单“地点”转换做出反应。
// mymodule/src/EventSubscriber/MyModuleEventSubscriber.php
namespace Drupal\my_module\EventSubscriber;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Drupal\state_machine\Event\WorkflowTransitionEvent;
class MyModuleEventSubscriber implements EventSubscriberInterface {
public static function getSubscribedEvents() {
// The format for adding a state machine event to subscribe to is:
// {group}.{transition key}.pre_transition or {group}.{transition key}.post_transition
// depending on when you want to react.
$events = ['commerce_order.place.post_transition' => 'onOrderPlace'];
return $events;
}
public function onOrderPlace(WorkflowTransitionEvent $event) {
// @todo Write code that will run when the subscribed event fires.
}
}
告诉Drupal关于您的活动订阅者
您的活动订阅者应添加到模块基本目录中的{module} .services.yml。
以下内容将在上一节中注册事件订阅者:
# mymodule.services.yml
services:
my_module_event_subscriber:
class: '\Drupal\my_module\EventSubscriber\MyModuleEventSubscriber'
tags:
- { name: 'event_subscriber' }
有关更多参考,请查看以下网址: https://docs.drupalcommerce.org/commerce2/developer-guide/orders/react-to-workflow-transitions#reacting-to-transitions