Skip to content

Loading…

added support for parameters with default null #581

Merged
merged 1 commit into from

4 participants

@lsmith77

No description provided.

@stloyd

+1

@Seldaek
Symfony member

Awesome. It's been on my list of little things to fix for about a year now.. never got to it :)

@fabpot fabpot merged commit 1ecaade into symfony:master
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Commits on Apr 18, 2011
  1. @lsmith77
View
7 src/Symfony/Component/Routing/Generator/UrlGenerator.php
@@ -99,8 +99,11 @@ protected function doGenerate($variables, $defaults, $requirements, $tokens, $pa
throw new \InvalidArgumentException(sprintf('Parameter "%s" for route "%s" must match "%s" ("%s" given).', $token[3], $name, $requirements[$token[3]], $tparams[$token[3]]));
}
- // %2F is not valid in a URL, so we don't encode it (which is fine as the requirements explicitely allowed it)
- $url = $token[1].str_replace('%2F', '/', urlencode($tparams[$token[3]])).$url;
+ if (isset($tparams[$token[3]])) {
+ // %2F is not valid in a URL, so we don't encode it (which is fine as the requirements explicitly allowed it)
+ $url = $token[1].str_replace('%2F', '/', urlencode($tparams[$token[3]])).$url;
+ }
+
$optional = false;
}
} elseif ('text' === $token[0]) {
View
17 tests/Symfony/Tests/Component/Routing/Generator/UrlGeneratorTest.php
@@ -119,7 +119,22 @@ public function testRelativeUrlWithParameter()
$this->assertEquals('/app.php/testing/bar', $url);
}
-
+
+ public function testRelativeUrlWithNullParameter()
+ {
+ $this->routeCollection->add('test', new Route('/testing.{format}', array('format' => null)));
+ $this->generator->setContext(array(
+ 'base_url'=>'/app.php',
+ 'method'=>'GET',
+ 'host'=>'localhost',
+ 'port'=>80,
+ 'is_secure'=>false));
+
+ $url = $this->generator->generate('test', array(), false);
+
+ $this->assertEquals('/app.php/testing', $url);
+ }
+
public function testRelativeUrlWithExtraParameters()
{
$this->routeCollection->add('test', new Route('/testing'));
Something went wrong with that request. Please try again.