1046579458e0ff14bf10b552d6bb9e4feeded769
[yaffs-website] / web / core / modules / layout_builder / src / Routing / LayoutBuilderRoutes.php
1 <?php
2
3 namespace Drupal\layout_builder\Routing;
4
5 use Drupal\Core\Routing\RouteBuildEvent;
6 use Drupal\Core\Routing\RoutingEvents;
7 use Drupal\layout_builder\SectionStorage\SectionStorageManagerInterface;
8 use Symfony\Component\EventDispatcher\EventSubscriberInterface;
9
10 /**
11  * Provides routes for the Layout Builder UI.
12  *
13  * @internal
14  */
15 class LayoutBuilderRoutes implements EventSubscriberInterface {
16
17   /**
18    * The section storage manager.
19    *
20    * @var \Drupal\layout_builder\SectionStorage\SectionStorageManagerInterface
21    */
22   protected $sectionStorageManager;
23
24   /**
25    * Constructs a new LayoutBuilderRoutes.
26    *
27    * @param \Drupal\layout_builder\SectionStorage\SectionStorageManagerInterface $section_storage_manager
28    *   The section storage manager.
29    */
30   public function __construct(SectionStorageManagerInterface $section_storage_manager) {
31     $this->sectionStorageManager = $section_storage_manager;
32   }
33
34   /**
35    * Alters existing routes for a specific collection.
36    *
37    * @param \Drupal\Core\Routing\RouteBuildEvent $event
38    *   The route build event.
39    */
40   public function onAlterRoutes(RouteBuildEvent $event) {
41     $collection = $event->getRouteCollection();
42     foreach ($this->sectionStorageManager->getDefinitions() as $plugin_id => $definition) {
43       $this->sectionStorageManager->loadEmpty($plugin_id)->buildRoutes($collection);
44     }
45   }
46
47   /**
48    * {@inheritdoc}
49    */
50   public static function getSubscribedEvents() {
51     // Run after \Drupal\field_ui\Routing\RouteSubscriber.
52     $events[RoutingEvents::ALTER] = ['onAlterRoutes', -110];
53     return $events;
54   }
55
56 }