[Routing] Fix syntax error when dumping routes with single quotes in the requirements or pattern
This commit is contained in:
parent
2b5e22d961
commit
418d6a0ead
@ -114,7 +114,7 @@ EOF;
|
||||
}
|
||||
|
||||
if ($prefix !== $parentPrefix) {
|
||||
$code[] = sprintf(" if (0 === strpos(\$pathinfo, '%s')) {", $prefix);
|
||||
$code[] = sprintf(" if (0 === strpos(\$pathinfo, %s)) {", var_export($prefix, true));
|
||||
$indent = ' ';
|
||||
}
|
||||
}
|
||||
@ -151,14 +151,14 @@ EOF;
|
||||
$matches = false;
|
||||
if (!count($compiledRoute->getVariables()) && false !== preg_match('#^(.)\^(?P<url>.*?)\$\1#', str_replace(array("\n", ' '), '', $compiledRoute->getRegex()), $m)) {
|
||||
if ($supportsRedirections && substr($m['url'], -1) === '/') {
|
||||
$conditions[] = sprintf("rtrim(\$pathinfo, '/') === '%s'", rtrim(str_replace('\\', '', $m['url']), '/'));
|
||||
$conditions[] = sprintf("rtrim(\$pathinfo, '/') === %s", var_export(rtrim(str_replace('\\', '', $m['url']), '/'), true));
|
||||
$hasTrailingSlash = true;
|
||||
} else {
|
||||
$conditions[] = sprintf("\$pathinfo === '%s'", str_replace('\\', '', $m['url']));
|
||||
$conditions[] = sprintf("\$pathinfo === %s", var_export(str_replace('\\', '', $m['url']), true));
|
||||
}
|
||||
} else {
|
||||
if ($compiledRoute->getStaticPrefix() && $compiledRoute->getStaticPrefix() != $parentPrefix) {
|
||||
$conditions[] = sprintf("0 === strpos(\$pathinfo, '%s')", $compiledRoute->getStaticPrefix());
|
||||
$conditions[] = sprintf("0 === strpos(\$pathinfo, %s)", var_export($compiledRoute->getStaticPrefix(), true));
|
||||
}
|
||||
|
||||
$regex = str_replace(array("\n", ' '), '', $compiledRoute->getRegex());
|
||||
@ -166,7 +166,7 @@ EOF;
|
||||
$regex = substr($regex, 0, $pos).'/?$'.substr($regex, $pos + 2);
|
||||
$hasTrailingSlash = true;
|
||||
}
|
||||
$conditions[] = sprintf("preg_match('%s', \$pathinfo, \$matches)", $regex);
|
||||
$conditions[] = sprintf("preg_match(%s, \$pathinfo, \$matches)", var_export($regex, true));
|
||||
|
||||
$matches = true;
|
||||
}
|
||||
|
@ -100,28 +100,34 @@ class ProjectUrlMatcher extends Symfony\Component\Routing\Matcher\UrlMatcher
|
||||
return array ( 'def' => 'test', '_route' => 'foofoo',);
|
||||
}
|
||||
|
||||
// quoter
|
||||
if (preg_match('#^/(?P<quoter>[\']+)$#x', $pathinfo, $matches)) {
|
||||
$matches['_route'] = 'quoter';
|
||||
return $matches;
|
||||
}
|
||||
|
||||
if (0 === strpos($pathinfo, '/a')) {
|
||||
if (0 === strpos($pathinfo, '/a/b')) {
|
||||
if (0 === strpos($pathinfo, '/a/b\'b')) {
|
||||
// foo
|
||||
if (preg_match('#^/a/b/(?P<foo>[^/]+?)$#x', $pathinfo, $matches)) {
|
||||
if (preg_match('#^/a/b\'b/(?P<foo>[^/]+?)$#x', $pathinfo, $matches)) {
|
||||
$matches['_route'] = 'foo';
|
||||
return $matches;
|
||||
}
|
||||
|
||||
// bar
|
||||
if (preg_match('#^/a/b/(?P<bar>[^/]+?)$#x', $pathinfo, $matches)) {
|
||||
if (preg_match('#^/a/b\'b/(?P<bar>[^/]+?)$#x', $pathinfo, $matches)) {
|
||||
$matches['_route'] = 'bar';
|
||||
return $matches;
|
||||
}
|
||||
|
||||
// foo1
|
||||
if (preg_match('#^/a/b/(?P<foo1>[^/]+?)$#x', $pathinfo, $matches)) {
|
||||
if (preg_match('#^/a/b\'b/(?P<foo1>[^/]+?)$#x', $pathinfo, $matches)) {
|
||||
$matches['_route'] = 'foo1';
|
||||
return $matches;
|
||||
}
|
||||
|
||||
// bar1
|
||||
if (preg_match('#^/a/b/(?P<bar1>[^/]+?)$#x', $pathinfo, $matches)) {
|
||||
if (preg_match('#^/a/b\'b/(?P<bar1>[^/]+?)$#x', $pathinfo, $matches)) {
|
||||
$matches['_route'] = 'bar1';
|
||||
return $matches;
|
||||
}
|
||||
|
@ -112,28 +112,34 @@ class ProjectUrlMatcher extends Symfony\Tests\Component\Routing\Fixtures\Redirec
|
||||
return array ( 'def' => 'test', '_route' => 'foofoo',);
|
||||
}
|
||||
|
||||
// quoter
|
||||
if (preg_match('#^/(?P<quoter>[\']+)$#x', $pathinfo, $matches)) {
|
||||
$matches['_route'] = 'quoter';
|
||||
return $matches;
|
||||
}
|
||||
|
||||
if (0 === strpos($pathinfo, '/a')) {
|
||||
if (0 === strpos($pathinfo, '/a/b')) {
|
||||
if (0 === strpos($pathinfo, '/a/b\'b')) {
|
||||
// foo
|
||||
if (preg_match('#^/a/b/(?P<foo>[^/]+?)$#x', $pathinfo, $matches)) {
|
||||
if (preg_match('#^/a/b\'b/(?P<foo>[^/]+?)$#x', $pathinfo, $matches)) {
|
||||
$matches['_route'] = 'foo';
|
||||
return $matches;
|
||||
}
|
||||
|
||||
// bar
|
||||
if (preg_match('#^/a/b/(?P<bar>[^/]+?)$#x', $pathinfo, $matches)) {
|
||||
if (preg_match('#^/a/b\'b/(?P<bar>[^/]+?)$#x', $pathinfo, $matches)) {
|
||||
$matches['_route'] = 'bar';
|
||||
return $matches;
|
||||
}
|
||||
|
||||
// foo1
|
||||
if (preg_match('#^/a/b/(?P<foo1>[^/]+?)$#x', $pathinfo, $matches)) {
|
||||
if (preg_match('#^/a/b\'b/(?P<foo1>[^/]+?)$#x', $pathinfo, $matches)) {
|
||||
$matches['_route'] = 'foo1';
|
||||
return $matches;
|
||||
}
|
||||
|
||||
// bar1
|
||||
if (preg_match('#^/a/b/(?P<bar1>[^/]+?)$#x', $pathinfo, $matches)) {
|
||||
if (preg_match('#^/a/b\'b/(?P<bar1>[^/]+?)$#x', $pathinfo, $matches)) {
|
||||
$matches['_route'] = 'bar1';
|
||||
return $matches;
|
||||
}
|
||||
|
@ -73,17 +73,23 @@ class PhpMatcherDumperTest extends \PHPUnit_Framework_TestCase
|
||||
'/foofoo',
|
||||
array('def' => 'test')
|
||||
));
|
||||
// pattern with quotes
|
||||
$collection->add('quoter', new Route(
|
||||
'/{quoter}',
|
||||
array(),
|
||||
array('quoter' => '[\']+')
|
||||
));
|
||||
|
||||
// prefixes
|
||||
$collection1 = new RouteCollection();
|
||||
$collection1->add('foo', new Route('/{foo}'));
|
||||
$collection1->add('bar', new Route('/{bar}'));
|
||||
$collection2 = new RouteCollection();
|
||||
$collection2->addCollection($collection1, '/b');
|
||||
$collection2->addCollection($collection1, '/b\'b');
|
||||
$collection1 = new RouteCollection();
|
||||
$collection1->add('foo1', new Route('/{foo1}'));
|
||||
$collection1->add('bar1', new Route('/{bar1}'));
|
||||
$collection2->addCollection($collection1, '/b');
|
||||
$collection2->addCollection($collection1, '/b\'b');
|
||||
$collection->addCollection($collection2, '/a');
|
||||
|
||||
// "dynamic" prefix
|
||||
|
Reference in New Issue
Block a user