commerce_api-8.x-1.x-dev/tests/modules/commerce_api_test/src/EventSubscriber/OrderSubscriber.php

tests/modules/commerce_api_test/src/EventSubscriber/OrderSubscriber.php
<?php

namespace Drupal\commerce_api_test\EventSubscriber;

use Drupal\commerce_order\Event\OrderEvent;
use Drupal\commerce_order\Event\OrderEvents;
use Drupal\commerce_order\Exception\OrderVersionMismatchException;
use Drupal\Core\State\StateInterface;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;

class OrderSubscriber implements EventSubscriberInterface {

  /**
   * The state key/value store.
   *
   * @var \Drupal\Core\State\StateInterface
   */
  protected $state;

  /**
   * Constructs a new OrderSubscriber object.
   *
   * @param \Drupal\Core\State\StateInterface $state
   *   The state key/value store.
   */
  public function __construct(StateInterface $state) {
    $this->state = $state;
  }

  /**
   * {@inheritdoc}
   */
  public static function getSubscribedEvents() {
    return [
      OrderEvents::ORDER_PRESAVE => ['onPresave'],
    ];
  }

  /**
   * Simulates an order version mismatch exception on demand for tests.
   *
   * @param \Drupal\commerce_order\Event\OrderEvent $event
   *   The order event.
   */
  public function onPresave(OrderEvent $event) {
    if ($this->state->get('trigger_order_version_mismatch', FALSE)) {
      throw new OrderVersionMismatchException('The order has either been modified by another user, or you have already submitted modifications. As a result, your changes cannot be saved.');
    }
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc