commerce_product_bundles-8.x-1.0/src/EventSubscriber/BundleCartSubscriber.php

src/EventSubscriber/BundleCartSubscriber.php
<?php

namespace Drupal\commerce_product_bundles\EventSubscriber;

use Drupal\commerce_cart\Event\CartEvents;
use Drupal\commerce_cart\Event\OrderItemComparisonFieldsEvent;
use Drupal\commerce_product_bundles\Entity\ProductBundleVariationInterface;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;

/**
 * Class BundleCartSubscriber
 *
 * @package Drupal\commerce_product_bundles\EventSubscriber
 */
class BundleCartSubscriber implements EventSubscriberInterface {

  /**
   * {@inheritdoc}
   */
  public static function getSubscribedEvents() {
    $events = [
      CartEvents::ORDER_ITEM_COMPARISON_FIELDS => ['onBundleCartComparison'],
    ];
    return $events;
  }

  /**
   * Add ref. variation field to comparison for bundles.
   * Allow bundles to be combined in cart.
   *
   * @param \Drupal\commerce_cart\Event\OrderItemComparisonFieldsEvent $event
   */
  public function onBundleCartComparison(OrderItemComparisonFieldsEvent $event) {
    $order_item = $event->getOrderItem();
    $purchasable_eck = $order_item->getPurchasedEntity();
    if ($purchasable_eck instanceof ProductBundleVariationInterface) {
      $event->setComparisonFields(['field_product_variation_ref']);
    }
  }

}

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

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