Как подписаться на события DrupalCommerce 2X для каждого нового заказа, продукта и т. Д.

Мне нужно иметь возможность написать плагин, который получает заказы, продукт и т. Д. Каждый раз, когда в DrupalCommerce 2X создается новый Заказ, Продукт. но я не могу понять, как Коммерция хочет, чтобы я это сделал. Я не вижу * файлов событий, которые бы дали мне данные.

Похоже, что Commerce хочет, чтобы я создал отдельный плагин потока событий, который бы добавил нужный мне шаг, но я не могу найти документацию о реализации моего собственного потока событий.

Можете ли вы указать мне правильный путь запуска кода при создании заказа или продукта? Я на правильном пути? Можете ли вы указать на документы по разработке событий / EventSubscriber Flow?

0

Решение

По завершении заказа системный вызов 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' }

Для получения дополнительной справки просмотрите следующий URL:
https://docs.drupalcommerce.org/commerce2/developer-guide/orders/react-to-workflow-transitions#reacting-to-transitions

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]