3 namespace Drupal\layout_builder\Routing;
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;
11 * Provides routes for the Layout Builder UI.
15 class LayoutBuilderRoutes implements EventSubscriberInterface {
18 * The section storage manager.
20 * @var \Drupal\layout_builder\SectionStorage\SectionStorageManagerInterface
22 protected $sectionStorageManager;
25 * Constructs a new LayoutBuilderRoutes.
27 * @param \Drupal\layout_builder\SectionStorage\SectionStorageManagerInterface $section_storage_manager
28 * The section storage manager.
30 public function __construct(SectionStorageManagerInterface $section_storage_manager) {
31 $this->sectionStorageManager = $section_storage_manager;
35 * Alters existing routes for a specific collection.
37 * @param \Drupal\Core\Routing\RouteBuildEvent $event
38 * The route build event.
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);
50 public static function getSubscribedEvents() {
51 // Run after \Drupal\field_ui\Routing\RouteSubscriber.
52 $events[RoutingEvents::ALTER] = ['onAlterRoutes', -110];