diff --git a/src/Symfony/Bundle/FrameworkBundle/Routing/Router.php b/src/Symfony/Bundle/FrameworkBundle/Routing/Router.php index 3f9b5cf75e..c69ec13066 100644 --- a/src/Symfony/Bundle/FrameworkBundle/Routing/Router.php +++ b/src/Symfony/Bundle/FrameworkBundle/Routing/Router.php @@ -114,6 +114,10 @@ class Router extends BaseRouter implements WarmableInterface { $container = $this->container; + if (null === $value) { + return null; + } + $escapedValue = preg_replace_callback('/%%|%([^%\s]+)%/', function ($match) use ($container, $value) { // skip %% if (!isset($match[1])) { diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/Routing/RouterTest.php b/src/Symfony/Bundle/FrameworkBundle/Tests/Routing/RouterTest.php index 1d50d7a25f..877cc2df4a 100644 --- a/src/Symfony/Bundle/FrameworkBundle/Tests/Routing/RouterTest.php +++ b/src/Symfony/Bundle/FrameworkBundle/Tests/Routing/RouterTest.php @@ -144,6 +144,19 @@ class RoutingTest extends \PHPUnit_Framework_TestCase $router->getRouteCollection()->get('foo'); } + public function testDefaultValueNullAsEmptyStringRegression() + { + $routes = new RouteCollection(); + $routes->add('foo', new Route('foo', array('foo' => null), array('foo' => '\d+'))); + + $sc = $this->getServiceContainer($routes); + + $router = new Router($sc, 'foo'); + + $route = $router->getRouteCollection()->get('foo'); + $this->assertNull($route->getDefault('foo')); + } + private function getServiceContainer(RouteCollection $routes) { $loader = $this->getMock('Symfony\Component\Config\Loader\LoaderInterface');