- Issue created by @freenjt
- Issue was unassigned.
- 🇨🇦Canada freenjt Vancouver
Creating a RouteSubscriber service that checks if the route exists, and if it does not exist, adds it, solves the problem.
class RouteSubscriber extends RouteSubscriberBase { /** * {@inheritdoc} */ protected function alterRoutes(RouteCollection $collection) { if (!$this->routeExists('entity.storage.translation_revert')) { $this->routes($collection); } } /** * Function to add the translation_revert route of the Storage entities. */ public function routes(RouteCollection $collection) { $entity_type_manager = \Drupal::entityTypeManager(); $entity_type = $entity_type_manager->getDefinition('storage'); if ($entity_type->hasLinkTemplate('translation_revert')) { $route = new Route($entity_type->getLinkTemplate('translation_revert')); $route ->setDefaults([ '_form' => '\Drupal\storage\Form\StorageRevisionRevertTranslationForm', '_title' => 'Revert to earlier revision of a translation', ]) ->setRequirement('_permission', 'revert all storage revisions') ->setOption('_admin_route', TRUE); $entity_type_id = $entity_type->id(); $collection->add("entity.{$entity_type_id}.translation_revert", $route); } } /** * Check if rout exists. */ private function routeExists($route_to_check) { try { \Drupal::service('router.route_provider') ->getRouteByName($route_to_check); } catch (RouteNotFoundException $exception) { return FALSE; } return TRUE; } }
- Status changed to Fixed
8 months ago 5:13pm 3 April 2024 Automatically closed - issue fixed for 2 weeks with no activity.