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

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

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

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


person Saurabh Chopra    schedule 13.06.2018    source источник


Ответы (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' }

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

person SynapseIndia    schedule 13.06.2018
comment
новый пример URL-адреса docs.drupalcommerce.org/commerce2/developer-guide/core/ . Старый 404 - person Mykola Mykolayovich Dolynskyi; 01.07.2021