/** * 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; }
public function testGenerateUniqueRoute() { $route = $this->getMockRoute(); $node = $this->getMockNode(); $this->addRoutePattern('/test', $route); $object = $this; $callback = function ($routePattern) use($object) { $object->assertEquals('/test', $routePattern); }; $this->addRouteMethodSetRoutePattern($callback, $route); $this->addNodeType('test', $node); $existingRoute = $this->getMockRoute(); $this->addRoutePattern('/test-1', $existingRoute); $this->addRouteName('test', $existingRoute); $this->addRouteProviderMethodGetRouteByPattern($existingRoute); $this->routeGenerator->generateRoute($route, $node, 'en'); }
/** * 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; }