Skip to content

Commit

Permalink
added support for parameters with default null
Browse files Browse the repository at this point in the history
  • Loading branch information
lsmith77 committed Apr 18, 2011
1 parent f4aae27 commit 1ecaade
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 3 deletions.
7 changes: 5 additions & 2 deletions src/Symfony/Component/Routing/Generator/UrlGenerator.php
Original file line number Diff line number Diff line change
Expand Up @@ -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]) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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'));
Expand Down

0 comments on commit 1ecaade

Please sign in to comment.