[WebBundle] made the request instance explicit in the controller base class (useful if you inject the request for testing purpose)

This commit is contained in:
Fabien Potencier 2010-05-03 11:17:02 +02:00
parent a9d8f39382
commit 8fe25d343b
2 changed files with 14 additions and 1 deletions

View File

@ -3,6 +3,7 @@
namespace Symfony\Framework\WebBundle;
use Symfony\Components\DependencyInjection\ContainerInterface;
use Symfony\Components\RequestHandler\Request;
use Symfony\Components\RequestHandler\Response;
/*
@ -24,6 +25,7 @@ use Symfony\Components\RequestHandler\Response;
class Controller
{
protected $container;
protected $request;
function __construct(ContainerInterface $container)
{
@ -32,7 +34,17 @@ class Controller
public function getRequest()
{
return $this->container->getRequestService();
if (null === $this->request)
{
$this->request = $this->container->getRequestService();
}
return $this->request;
}
public function setRequest(Request $request)
{
return $this->request = $request;
}
public function getUser()

View File

@ -69,6 +69,7 @@ class ControllerLoader
}
$controller = $this->findController($bundle, $controller, $action);
$controller[0]->setRequest($request);
$r = new \ReflectionObject($controller[0]);
$arguments = $this->getMethodArguments($r->getMethod($controller[1]), $event->getParameter('request')->path->all(), sprintf('%s::%s()', get_class($controller[0]), $controller[1]));