lupus_decoupled-1.x-dev/modules/lupus_decoupled_layout_builder/src/EventSubscriber/LupusDecoupledLayoutBuilderRouteSubscriber.php

modules/lupus_decoupled_layout_builder/src/EventSubscriber/LupusDecoupledLayoutBuilderRouteSubscriber.php
<?php

namespace Drupal\lupus_decoupled_layout_builder\EventSubscriber;

use Drupal\Core\Routing\RouteSubscriberBase;
use Drupal\Core\Routing\RoutingEvents;
use Symfony\Component\Routing\RouteCollection;
use drunomics\ServiceUtils\Core\Entity\EntityTypeManagerTrait;

/**
 * Registers layout-preview routes.
 */
class LupusDecoupledLayoutBuilderRouteSubscriber extends RouteSubscriberBase {

  use EntityTypeManagerTrait;

  /**
   * {@inheritdoc}
   */
  protected function alterRoutes(RouteCollection $collection) {
    // Register layout-preview routes (returning custom elements) for every
    // layout route.
    foreach ($this->getEntityTypeManager()->getDefinitions() as $entityTypeId => $entityType) {
      if ($layout_route = $collection->get("layout_builder.overrides.$entityTypeId.view")) {
        // Take the layout route, so we inherit all the temp store logic for
        // section storage. However, switch out the controller from the layout
        // builder form to a regular entity view and disable caching.
        // @see \Drupal\lupus_decoupled_layout_builder\CustomElementsLayoutBuilderPreviewEntityViewDisplay
        $layout_preview_route = clone $layout_route;
        $defaults = $layout_route->getDefaults();
        unset($defaults['_entity_form']);
        $defaults['_controller'] = '\Drupal\lupus_ce_renderer\Controller\CustomElementsController::entityView';
        $layout_preview_route->setDefaults($defaults);
        $layout_preview_route->setPath($layout_route->getPath() . '-preview');
        $layout_preview_route->setOption('no_cache', TRUE);
        $layout_preview_route->setRequirement('_format', 'custom_elements');
        $collection->add("lupus_decoupled_layout_builder.layout_builder.$entityTypeId.view", $layout_preview_route);
      }
    }
  }

  /**
   * {@inheritdoc}
   */
  public static function getSubscribedEvents(): array {
    $events = parent::getSubscribedEvents();

    // Run after
    // \Drupal\layout_builder\Routing\LayoutBuilderRoutes::getSubscribedEvents()
    $events[RoutingEvents::ALTER] = ['onAlterRoutes', -300];

    return $events;
  }

}

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

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