merged branch merk/routing-bug (PR #4823)
Commits -------c061c30
Router#resolveString should return null instead of empty string when $value is nulla1d1a02
Null default value route regression Discussion ---------- [Router] Null default value route regression Bug fix: yes Feature addition: no Backwards compatibility break: no Symfony2 tests pass: yes Fixes the following tickets: #4823 Todo: License of the code: MIT Documentation PR: --- The commit by @vicb0555913fbb
introduces a regression in the handling of default values that are null, while there are requirements still set for this value. This is a failing test case and fix for the issue. --------------------------------------------------------------------------- by merk at 2012-07-10T04:24:40Z Now contains a fix, tests now pass.
This commit is contained in:
commit
f2958b3fb6
@ -114,6 +114,10 @@ class Router extends BaseRouter implements WarmableInterface
|
|||||||
{
|
{
|
||||||
$container = $this->container;
|
$container = $this->container;
|
||||||
|
|
||||||
|
if (null === $value) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
$escapedValue = preg_replace_callback('/%%|%([^%\s]+)%/', function ($match) use ($container, $value) {
|
$escapedValue = preg_replace_callback('/%%|%([^%\s]+)%/', function ($match) use ($container, $value) {
|
||||||
// skip %%
|
// skip %%
|
||||||
if (!isset($match[1])) {
|
if (!isset($match[1])) {
|
||||||
|
@ -144,6 +144,19 @@ class RoutingTest extends \PHPUnit_Framework_TestCase
|
|||||||
$router->getRouteCollection()->get('foo');
|
$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)
|
private function getServiceContainer(RouteCollection $routes)
|
||||||
{
|
{
|
||||||
$loader = $this->getMock('Symfony\Component\Config\Loader\LoaderInterface');
|
$loader = $this->getMock('Symfony\Component\Config\Loader\LoaderInterface');
|
||||||
|
Reference in New Issue
Block a user