public function testGetParameter() { $requestContext = new RequestContext(); $requestContext->setParameters(array('foo' => 'bar')); $this->assertEquals('bar', $requestContext->getParameter('foo')); $this->assertNull($requestContext->getParameter('baz')); }
public function generate($name, array $parameters = array(), $referenceType = self::ABSOLUTE_PATH, $scheme = null) { $contextParameters = array_deep_merge($this->sessionDefaultParameters, $this->defaultParameters, $this->context->getParameters()); $oldContextParameters = $this->context->getParameters(); $this->context->setParameters($contextParameters); $oldScheme = null; if ($scheme) { $oldScheme = $this->context->getScheme(); $this->context->setScheme($scheme); } $oldHost = $this->context->getHost(); $context = $this->context; $finalize = new OutOfScopeFinalize(function () use($oldContextParameters, $oldScheme, $oldHost, $context, $scheme) { if ($scheme) { $context->setScheme($oldScheme); } $context->setHost($oldHost); $context->setParameters($oldContextParameters); }); $cultures = $this->getCultures(array_merge($contextParameters, $parameters)); $route = null; foreach ($cultures as $culture) { $routeName = $this->getI18nRouteName($name, $culture); if ($this->routeCollection->get($routeName)) { try { $host = $this->getHostForCulture($culture == '' ? 'default' : $culture); $this->context->setHost($host); if ($host != $oldHost) { $referenceType = self::ABSOLUTE_URL; } } catch (NoHostFoundForCultureException $e) { //We do nothing with the exception, it will use the request domain } $route = $this->urlGenerator->generate($routeName, $parameters, $referenceType); break; } } if (is_null($route)) { $route = $this->urlGenerator->generate($name, $parameters); } return $route; }