diff --git a/src/Silex/Application.php b/src/Silex/Application.php index e4dc2ec2a..70a1512d0 100644 --- a/src/Silex/Application.php +++ b/src/Silex/Application.php @@ -28,7 +28,7 @@ use Symfony\Component\HttpFoundation\StreamedResponse; use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\Routing\RouteCollection; -use Symfony\Component\Routing\RequestContext; +use Silex\RequestContext; use Silex\RedirectableUrlMatcher; use Silex\ControllerResolver; use Silex\EventListener\LocaleListener; @@ -125,11 +125,6 @@ public function __construct(array $values = array()) }); $this['url_matcher'] = $this->share(function () use ($app) { - // Inject the query string into the RequestContext for Symfony versions <= 2.2 - if ($app['request']->server->get('QUERY_STRING') !== '' && !method_exists($app['request_context'], 'getQueryString')) { - $app['request_context']->setParameter('QUERY_STRING', $app['request']->server->get('QUERY_STRING')); - } - return new RedirectableUrlMatcher($app['routes'], $app['request_context']); }); diff --git a/src/Silex/RequestContext.php b/src/Silex/RequestContext.php new file mode 100644 index 000000000..83003046f --- /dev/null +++ b/src/Silex/RequestContext.php @@ -0,0 +1,33 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Silex; + +use Symfony\Component\Routing\RequestContext as BaseRequestContext; +use Symfony\Component\HttpFoundation\Request; + +/** + * Request Context for Symfony <= 2.2 + * + * @author Fabien Potencier + */ +class RequestContext extends BaseRequestContext +{ + public function fromRequest(Request $request) + { + parent::fromRequest($request); + + // Inject the query string as a parameter for Symfony versions <= 2.2 + if (!method_exists($this, 'getQueryString') && '' !== $qs = $request->server->get('QUERY_STRING')) { + $this->setParameter('QUERY_STRING', $qs); + } + } +}