public function it_should_update_existing_route(RouteInterface $route, EventDispatcherInterface $eventDispatcher, RouteInterface $parent) { $route->getType()->willReturn(RouteInterface::TYPE_COLLECTION); $route->getParent()->willReturn($parent); $route->getName()->willReturn('test-name'); $eventDispatcher->dispatch(RouteEvents::PRE_UPDATE, Argument::type(RouteEvent::class))->shouldBeCalled(); $route->setVariablePattern(Argument::exact('/{slug}'))->shouldBeCalled(); $route->setRequirement(Argument::exact('slug'), Argument::exact('[a-zA-Z0-9*\\-_\\/]+'))->shouldBeCalled(); $route->setDefault('slug', null)->shouldBeCalled(); $route->setStaticPrefix('/test-name')->shouldBeCalled(); $eventDispatcher->dispatch(RouteEvents::POST_UPDATE, Argument::type(RouteEvent::class))->shouldBeCalled(); $this->updateRoute($route)->shouldReturn($route); }
/** * {@inheritdoc} */ public function resolveFromRoute(RouteInterface $route, $templateName = TemplateNameResolverInterface::TEMPLATE_NAME) { if (null !== $route->getTemplateName()) { $templateName = $route->getTemplateName(); } if (RouteInterface::TYPE_COLLECTION === $route->getType() && null === $route->getTemplateName()) { if ($contentTemplateName = $this->getTemplateNameFromRouteContent($route)) { $templateName = $contentTemplateName; } else { throw new NotFoundHttpException(sprintf('There is no template file defined for "%s" route!', $route->getName())); } } elseif (RouteInterface::TYPE_CONTENT === $route->getType()) { if ($contentTemplateName = $this->getTemplateNameFromRouteContent($route)) { $templateName = $contentTemplateName; } } return $templateName; }
/** * @param RouteInterface $route * * @return RouteInterface */ public function fillRoute(RouteInterface $route) { switch ($route->getType()) { case RouteInterface::TYPE_CONTENT: $route->setVariablePattern(null); $route->setStaticPrefix($this->generatePath($route)); $route->setRequirements([]); break; case RouteInterface::TYPE_COLLECTION: $route->setVariablePattern('/{slug}'); $route->setStaticPrefix($this->generatePath($route)); $route->setRequirement('slug', '[a-zA-Z0-9*\\-_\\/]+'); $route->setDefault('slug', null); break; default: throw new \InvalidArgumentException(sprintf('Route type "%s" is unsupported!', $route->getType())); } return $route; }