[Routing] fixed URL generation when an optional variable value is 0
This commit is contained in:
parent
035afc1f4e
commit
fefee0d5e5
@ -110,7 +110,7 @@ class UrlGenerator implements UrlGeneratorInterface
|
|||||||
throw new \InvalidArgumentException(sprintf('Parameter "%s" for route "%s" must match "%s" ("%s" given).', $token[3], $name, $token[2], $tparams[$token[3]]));
|
throw new \InvalidArgumentException(sprintf('Parameter "%s" for route "%s" must match "%s" ("%s" given).', $token[3], $name, $token[2], $tparams[$token[3]]));
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($tparams[$token[3]] || !$optional) {
|
if (!in_array($tparams[$token[3]], array(null, '', false), true) || !$optional) {
|
||||||
// %2F is not valid in a URL, so we don't encode it (which is fine as the requirements explicitly allowed it)
|
// %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;
|
$url = $token[1].str_replace('%2F', '/', urlencode($tparams[$token[3]])).$url;
|
||||||
}
|
}
|
||||||
|
@ -82,6 +82,14 @@ class UrlGeneratorTest extends \PHPUnit_Framework_TestCase
|
|||||||
$this->assertEquals('/app.php/testing//bar', $url);
|
$this->assertEquals('/app.php/testing//bar', $url);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testRelativeUrlWithOptionalZeroParameter()
|
||||||
|
{
|
||||||
|
$routes = $this->getRoutes('test', new Route('/testing/{page}'));
|
||||||
|
$url = $this->getGenerator($routes)->generate('test', array('page' => 0), false);
|
||||||
|
|
||||||
|
$this->assertEquals('/app.php/testing/0', $url);
|
||||||
|
}
|
||||||
|
|
||||||
public function testRelativeUrlWithExtraParameters()
|
public function testRelativeUrlWithExtraParameters()
|
||||||
{
|
{
|
||||||
$routes = $this->getRoutes('test', new Route('/testing'));
|
$routes = $this->getRoutes('test', new Route('/testing'));
|
||||||
|
Reference in New Issue
Block a user