/** * Create node translation route. * * @param NodeTranslationInterface $translation * * @return RouteInterface */ public function create(NodeTranslationInterface $translation) { $locale = $translation->getLang(); $node = $translation->getNode(); $route = $this->routeManager->create(); $route->setRoutePattern($this->routerHelper->getRoutePattern($translation->getTitle(), $node, $locale)); $this->routeGenerator->generateRoute($route, $node, $locale); $this->routeManager->add($route); return $route; }
/** * Reverse transform. * * @param NodeTranslationInterface $nodeTranslation * * @return NodeTranslationInterface */ public function reverseTransform($nodeTranslation) { $route = $nodeTranslation->getRoute(); if (null !== $route && $route->getRoutePattern()) { $node = $nodeTranslation->getNode(); if ($this->routerHelper->hasController($node->getType())) { $this->routeGenerator->generateRoute($route, $node, $nodeTranslation->getLang()); $this->routeManager->add($route); } else { $this->routeManager->remove($route); } } return $nodeTranslation; }
/** * {@inheritdoc} */ public function add(RouteInterface $route, $save = false) { if (!$route->getName()) { throw new RoutingRuntimeException('Route name is empty!'); } $this->routes[$route->getName()] = $route; $this->routeManager->add($route, $save); }
/** * Reverse transform. * * @param NodeTranslationInterface $nodeTranslation * * @return NodeTranslationInterface */ public function reverseTransform($nodeTranslation) { $route = $nodeTranslation->getRoute(); if (null !== $route && $route->getRoutePattern()) { $node = $nodeTranslation->getNode(); if ('redirect' === $node->getType()) { $this->routeGenerator->generateRoute($route, $node, $nodeTranslation->getLang()); $this->redirectRoute->setName($route->getName()); $route->setDefault('redirectRouteName', $this->redirectRoute->getName()); $this->routeManager->add($route); $this->redirectRouteManager->add($this->redirectRoute); } else { $this->routeManager->remove($route); $this->redirectRouteManager->remove($this->redirectRoute); } } return $nodeTranslation; }