configFactory = $config_factory; $this->routerBuilder = $router_builder; } /** * {@inheritdoc} */ protected function alterRoutes(RouteCollection $collection) { if ($this->configFactory->get('node.settings')->get('use_admin_theme')) { foreach ($collection->all() as $route) { if ($route->hasOption('_node_operation_route')) { $route->setOption('_admin_route', TRUE); } } } } /** * Rebuilds the router when node.settings:use_admin_theme is changed. * * @param \Drupal\Core\Config\ConfigCrudEvent $event * The event object. */ public function onConfigSave(ConfigCrudEvent $event) { if ($event->getConfig()->getName() === 'node.settings' && $event->isChanged('use_admin_theme')) { $this->routerBuilder->setRebuildNeeded(); } } /** * {@inheritdoc} */ public static function getSubscribedEvents(): array { $events = parent::getSubscribedEvents(); $events[ConfigEvents::SAVE][] = ['onConfigSave', 0]; return $events; } }