class CommerceEventsSubscriber in Commerce Google Tag Manager 8.2
Same name and namespace in other branches
- 8 src/EventSubscriber/CommerceEventsSubscriber.php \Drupal\commerce_google_tag_manager\EventSubscriber\CommerceEventsSubscriber
Event handler for commerce related events.
Hierarchy
- class \Drupal\commerce_google_tag_manager\EventSubscriber\CommerceEventsSubscriber implements \Symfony\Component\EventDispatcher\EventSubscriberInterface
Expanded class hierarchy of CommerceEventsSubscriber
2 files declare their use of CommerceEventsSubscriber
- CartEventTest.php in tests/
src/ Kernel/ EventSubscriber/ CartEventTest.php - OrderEventTest.php in tests/
src/ Kernel/ EventSubscriber/ OrderEventTest.php
1 string reference to 'CommerceEventsSubscriber'
1 service uses CommerceEventsSubscriber
File
- src/
EventSubscriber/ CommerceEventsSubscriber.php, line 18
Namespace
Drupal\commerce_google_tag_manager\EventSubscriberView source
class CommerceEventsSubscriber implements EventSubscriberInterface {
/**
* The Commerce GTM event tracker.
*
* @var \Drupal\commerce_google_tag_manager\EventTrackerService
*/
private $eventTracker;
/**
* The current route match.
*
* @var \Drupal\Core\Routing\RouteMatchInterface
*/
protected $routeMatch;
/**
* Constructs the CommerceEventsSubscriber object.
*
* @param \Drupal\commerce_google_tag_manager\EventTrackerService $event_tracker
* The Commerce GTM event tracker.
* @param \Drupal\Core\Routing\RouteMatchInterface $route_match
* The route match, for context.
*/
public function __construct(EventTrackerService $event_tracker, RouteMatchInterface $route_match) {
$this->eventTracker = $event_tracker;
$this->routeMatch = $route_match;
}
/**
* {@inheritdoc}
*/
public static function getSubscribedEvents() {
return [
CartEvents::CART_ENTITY_ADD => 'trackCartAdd',
CartEvents::CART_ORDER_ITEM_REMOVE => 'trackCartRemove',
'commerce_order.place.post_transition' => 'trackPurchase',
// trackProductView should run before Dynamic Page Cache, which has
// priority 27.
// @see \Drupal\dynamic_page_cache\EventSubscriber\DynamicPageCacheSubscriber.
KernelEvents::REQUEST => [
'trackProductView',
28,
],
];
}
/**
* Track the "addToCart" event.
*
* @param \Drupal\commerce_cart\Event\CartEntityAddEvent $event
* The add to cart event.
*/
public function trackCartAdd(CartEntityAddEvent $event) {
$this->eventTracker
->addToCart($event
->getOrderItem(), (int) $event
->getQuantity());
}
/**
* Track the "productView" event.
*
* @param \Symfony\Component\HttpKernel\Event\GetResponseEvent $event
* The event to view the product.
*/
public function trackProductView(GetResponseEvent $event) {
$product = $this->routeMatch
->getParameter('commerce_product');
if ($event
->getRequest()
->getMethod() === 'GET' && !empty($product) && $this->routeMatch
->getRouteName() === 'entity.commerce_product.canonical') {
$default_variation = $product
->getDefaultVariation();
if ($default_variation) {
$this->eventTracker
->productDetailViews([
$default_variation,
]);
}
}
}
/**
* Track the "cartRemove" event.
*
* @param \Drupal\commerce_cart\Event\CartOrderItemRemoveEvent $event
* The cart event.
*/
public function trackCartRemove(CartOrderItemRemoveEvent $event) {
$this->eventTracker
->removeFromCart($event
->getOrderItem(), 1);
}
/**
* Track the "purchase" event.
*
* @param \Drupal\state_machine\Event\WorkflowTransitionEvent $event
* The workflow transition event.
*/
public function trackPurchase(WorkflowTransitionEvent $event) {
/** @var \Drupal\commerce_order\Entity\OrderInterface $order */
$order = $event
->getEntity();
$this->eventTracker
->purchase($order);
}
}
Members
Name![]() |
Modifiers | Type | Description | Overrides |
---|---|---|---|---|
CommerceEventsSubscriber:: |
private | property | The Commerce GTM event tracker. | |
CommerceEventsSubscriber:: |
protected | property | The current route match. | |
CommerceEventsSubscriber:: |
public static | function | Returns an array of event names this subscriber wants to listen to. | |
CommerceEventsSubscriber:: |
public | function | Track the "addToCart" event. | |
CommerceEventsSubscriber:: |
public | function | Track the "cartRemove" event. | |
CommerceEventsSubscriber:: |
public | function | Track the "productView" event. | |
CommerceEventsSubscriber:: |
public | function | Track the "purchase" event. | |
CommerceEventsSubscriber:: |
public | function | Constructs the CommerceEventsSubscriber object. |