xandeadx.ru Блог музицирующего веб-девелопера

Drupal → Отправить уведомление о новом заказе в Commerce 2

Опубликовано в

Во втором комерце практически все хуки заменили на события, поэтому теперь вместо реализации hook_commerce_checkout_complete() надо подписываться на событие commerce_order.place.post_transition:

src/EventSubscriber/ModulenameEventSubscriber.php:

namespace Drupal\modulename\EventSubscriber;
 
use Drupal\commerce_order\Entity\OrderInterface;
use Drupal\state_machine\Event\WorkflowTransitionEvent;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
 
class ModulenameEventSubscriber implements EventSubscriberInterface {
 
  /**
   * {@inheritdoc}
   */
  public static function getSubscribedEvents() {
    $events['commerce_order.place.post_transition'][] = ['onCheckoutComplete', -100];
    return $events;
  }
 
  /**
   * Checkout complete event callback.
   */
  public function onCheckoutComplete(WorkflowTransitionEvent $event) {
    $order = $event->getEntity(); /** @var OrderInterface $order */
    \Drupal::service('plugin.manager.mail')->mail(
      'modulename',
      'checkout_complete_notify',
      'to@gmail.com',
      \Drupal::languageManager()->getDefaultLanguage()->getId(),
      ['order' => $order]
    );
  }
 
}

modulename.module:

/**
 * Implements hook_mail().
 */
function modulename_mail($key, &$message, $params) {
  if ($key == 'checkout_complete_notify') {
    $order = $params['order']; /** @var OrderInterface $order */
 
    $message['subject'] = '...';
    $message['body'][] = '...';
  }
}

modulename.services.yml:

services:
  modulename.event_subscriber:
    class: Drupal\modulename\EventSubscriber\ModulenameEventSubscriber
    tags:
      - { name: event_subscriber }
Написанное актуально для Drupal Commerce 2
Похожие записи

Оставить комментарий

Содержимое этого поля является приватным и не будет отображаться публично. Если у вас есть аккаунт в Gravatar, привязанный к этому e-mail адресу, то он будет использован для отображения аватара.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Доступные HTML теги: <a> <i> <b> <strong> <code> <ul> <ol> <li> <blockquote> <em> <s>
  • Строки и параграфы переносятся автоматически.
  • Подсветка кода осуществляется с помощью тегов: <code>, <css>, <html>, <ini>, <javascript>, <sql>, <php>. Поддерживаемые стили выделения кода: <foo>, [foo].

Подробнее о форматировании