feature #9251 [WIP] [FrameworkBundle] removed some more dependencies on the request service (fabpot)
This PR was merged into the 2.5-dev branch.
Discussion
----------
[WIP] [FrameworkBundle] removed some more dependencies on the request service
| Q | A
| ------------- | ---
| Bug fix? | kinda (see linked tickets)
| New feature? | no
| BC breaks? | no
| Deprecations? | no
| Tests pass? | yes
| Fixed tickets | #8915, #9185
| License | MIT
| Doc PR | n/a
/cc @kriswallsmith
Commits
-------
4f3d502
[FrameworkBundle] removed some more dependencies on the request service
This commit is contained in:
commit
28a8400867
@ -218,6 +218,9 @@ UPGRADE FROM 2.x to 3.0
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
* The `request` service was removed. You must inject the `request_stack`
|
||||||
|
service instead.
|
||||||
|
|
||||||
* The `enctype` method of the `form` helper was removed. You should use the
|
* The `enctype` method of the `form` helper was removed. You should use the
|
||||||
new method `start` instead.
|
new method `start` instead.
|
||||||
|
|
||||||
|
@ -43,6 +43,8 @@
|
|||||||
YourRequestClass to the Kernel.
|
YourRequestClass to the Kernel.
|
||||||
This service definition only defines the scope of the request.
|
This service definition only defines the scope of the request.
|
||||||
It is used to check references scope.
|
It is used to check references scope.
|
||||||
|
|
||||||
|
This service is deprecated, you should use the request_stack service instead.
|
||||||
-->
|
-->
|
||||||
<service id="request" scope="request" synthetic="true" synchronized="true" />
|
<service id="request" scope="request" synthetic="true" synchronized="true" />
|
||||||
|
|
||||||
|
@ -67,12 +67,12 @@
|
|||||||
|
|
||||||
<service id="templating.helper.request" class="%templating.helper.request.class%">
|
<service id="templating.helper.request" class="%templating.helper.request.class%">
|
||||||
<tag name="templating.helper" alias="request" />
|
<tag name="templating.helper" alias="request" />
|
||||||
<argument type="service" id="request" strict="false" />
|
<argument type="service" id="request_stack" />
|
||||||
</service>
|
</service>
|
||||||
|
|
||||||
<service id="templating.helper.session" class="%templating.helper.session.class%">
|
<service id="templating.helper.session" class="%templating.helper.session.class%">
|
||||||
<tag name="templating.helper" alias="session" />
|
<tag name="templating.helper" alias="session" />
|
||||||
<argument type="service" id="request" strict="false" />
|
<argument type="service" id="request_stack" />
|
||||||
</service>
|
</service>
|
||||||
|
|
||||||
<service id="templating.helper.router" class="%templating.helper.router.class%">
|
<service id="templating.helper.router" class="%templating.helper.router.class%">
|
||||||
|
@ -13,6 +13,7 @@ namespace Symfony\Bundle\FrameworkBundle\Templating\Helper;
|
|||||||
|
|
||||||
use Symfony\Component\Templating\Helper\Helper;
|
use Symfony\Component\Templating\Helper\Helper;
|
||||||
use Symfony\Component\HttpFoundation\Request;
|
use Symfony\Component\HttpFoundation\Request;
|
||||||
|
use Symfony\Component\HttpFoundation\RequestStack;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* RequestHelper provides access to the current request parameters.
|
* RequestHelper provides access to the current request parameters.
|
||||||
@ -22,15 +23,24 @@ use Symfony\Component\HttpFoundation\Request;
|
|||||||
class RequestHelper extends Helper
|
class RequestHelper extends Helper
|
||||||
{
|
{
|
||||||
protected $request;
|
protected $request;
|
||||||
|
protected $requestStack;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor.
|
* Constructor.
|
||||||
*
|
*
|
||||||
* @param Request $request A Request instance
|
* @param Request|RequestStack $requestStack A RequestStack instance or a Request instance
|
||||||
|
*
|
||||||
|
* @deprecated since 2.5, passing a Request instance is deprecated and support for it will be removed in 3.0
|
||||||
*/
|
*/
|
||||||
public function __construct(Request $request)
|
public function __construct($requestStack)
|
||||||
{
|
{
|
||||||
$this->request = $request;
|
if ($requestStack instanceof Request) {
|
||||||
|
$this->request = $requestStack;
|
||||||
|
} elseif ($requestStack instanceof RequestStack) {
|
||||||
|
$this->requestStack = $requestStack;
|
||||||
|
} else {
|
||||||
|
throw new \InvalidArgumentException('RequestHelper only accepts a Request or a RequestStack instance.');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -45,7 +55,7 @@ class RequestHelper extends Helper
|
|||||||
*/
|
*/
|
||||||
public function getParameter($key, $default = null)
|
public function getParameter($key, $default = null)
|
||||||
{
|
{
|
||||||
return $this->request->get($key, $default);
|
return $this->getRequest()->get($key, $default);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -55,7 +65,20 @@ class RequestHelper extends Helper
|
|||||||
*/
|
*/
|
||||||
public function getLocale()
|
public function getLocale()
|
||||||
{
|
{
|
||||||
return $this->request->getLocale();
|
return $this->getRequest()->getLocale();
|
||||||
|
}
|
||||||
|
|
||||||
|
private function getRequest()
|
||||||
|
{
|
||||||
|
if ($this->requestStack) {
|
||||||
|
if (!$this->requestStack->getCurrentRequest()) {
|
||||||
|
throw new \LogicException('A Request must be available.');
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->requestStack->getCurrentRequest();
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->request;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -12,7 +12,7 @@
|
|||||||
namespace Symfony\Bundle\FrameworkBundle\Templating\Helper;
|
namespace Symfony\Bundle\FrameworkBundle\Templating\Helper;
|
||||||
|
|
||||||
use Symfony\Component\Templating\Helper\Helper;
|
use Symfony\Component\Templating\Helper\Helper;
|
||||||
use Symfony\Component\HttpFoundation\Request;
|
use Symfony\Component\HttpFoundation\RequestStack;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* SessionHelper provides read-only access to the session attributes.
|
* SessionHelper provides read-only access to the session attributes.
|
||||||
@ -22,15 +22,24 @@ use Symfony\Component\HttpFoundation\Request;
|
|||||||
class SessionHelper extends Helper
|
class SessionHelper extends Helper
|
||||||
{
|
{
|
||||||
protected $session;
|
protected $session;
|
||||||
|
protected $requestStack;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor.
|
* Constructor.
|
||||||
*
|
*
|
||||||
* @param Request $request A Request instance
|
* @param Request|RequestStack $requestStack A RequestStack instance or a Request instance
|
||||||
|
*
|
||||||
|
* @deprecated since 2.5, passing a Request instance is deprecated and support for it will be removed in 3.0
|
||||||
*/
|
*/
|
||||||
public function __construct(Request $request)
|
public function __construct($requestStack)
|
||||||
{
|
{
|
||||||
$this->session = $request->getSession();
|
if ($requestStack instanceof Request) {
|
||||||
|
$this->session = $requestStack->getSession();
|
||||||
|
} elseif ($requestStack instanceof RequestStack) {
|
||||||
|
$this->requestStack = $requestStack;
|
||||||
|
} else {
|
||||||
|
throw new \InvalidArgumentException('RequestHelper only accepts a Request or a RequestStack instance.');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -43,22 +52,35 @@ class SessionHelper extends Helper
|
|||||||
*/
|
*/
|
||||||
public function get($name, $default = null)
|
public function get($name, $default = null)
|
||||||
{
|
{
|
||||||
return $this->session->get($name, $default);
|
return $this->getSession()->get($name, $default);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getFlash($name, array $default = array())
|
public function getFlash($name, array $default = array())
|
||||||
{
|
{
|
||||||
return $this->session->getFlashBag()->get($name, $default);
|
return $this->getSession()->getFlashBag()->get($name, $default);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getFlashes()
|
public function getFlashes()
|
||||||
{
|
{
|
||||||
return $this->session->getFlashBag()->all();
|
return $this->getSession()->getFlashBag()->all();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function hasFlash($name)
|
public function hasFlash($name)
|
||||||
{
|
{
|
||||||
return $this->session->getFlashBag()->has($name);
|
return $this->getSession()->getFlashBag()->has($name);
|
||||||
|
}
|
||||||
|
|
||||||
|
private function getSession()
|
||||||
|
{
|
||||||
|
if (null === $this->session) {
|
||||||
|
if (!$this->requestStack->getMasterRequest()) {
|
||||||
|
throw new \LogicException('A Request must be available.');
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->session = $this->requestStack->getMasterRequest()->getSession();
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->session;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -12,26 +12,24 @@
|
|||||||
namespace Symfony\Bundle\FrameworkBundle\Tests\Templating\Helper;
|
namespace Symfony\Bundle\FrameworkBundle\Tests\Templating\Helper;
|
||||||
|
|
||||||
use Symfony\Component\HttpFoundation\Request;
|
use Symfony\Component\HttpFoundation\Request;
|
||||||
|
use Symfony\Component\HttpFoundation\RequestStack;
|
||||||
use Symfony\Bundle\FrameworkBundle\Templating\Helper\RequestHelper;
|
use Symfony\Bundle\FrameworkBundle\Templating\Helper\RequestHelper;
|
||||||
|
|
||||||
class RequestHelperTest extends \PHPUnit_Framework_TestCase
|
class RequestHelperTest extends \PHPUnit_Framework_TestCase
|
||||||
{
|
{
|
||||||
protected $request;
|
protected $requestStack;
|
||||||
|
|
||||||
protected function setUp()
|
protected function setUp()
|
||||||
{
|
{
|
||||||
$this->request = new Request();
|
$this->requestStack = new RequestStack();
|
||||||
$this->request->initialize(array('foobar' => 'bar'));
|
$request = new Request();
|
||||||
}
|
$request->initialize(array('foobar' => 'bar'));
|
||||||
|
$this->requestStack->push($request);
|
||||||
protected function tearDown()
|
|
||||||
{
|
|
||||||
$this->request = null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testGetParameter()
|
public function testGetParameter()
|
||||||
{
|
{
|
||||||
$helper = new RequestHelper($this->request);
|
$helper = new RequestHelper($this->requestStack);
|
||||||
|
|
||||||
$this->assertEquals('bar', $helper->getParameter('foobar'));
|
$this->assertEquals('bar', $helper->getParameter('foobar'));
|
||||||
$this->assertEquals('foo', $helper->getParameter('bar', 'foo'));
|
$this->assertEquals('foo', $helper->getParameter('bar', 'foo'));
|
||||||
@ -41,14 +39,14 @@ class RequestHelperTest extends \PHPUnit_Framework_TestCase
|
|||||||
|
|
||||||
public function testGetLocale()
|
public function testGetLocale()
|
||||||
{
|
{
|
||||||
$helper = new RequestHelper($this->request);
|
$helper = new RequestHelper($this->requestStack);
|
||||||
|
|
||||||
$this->assertEquals('en', $helper->getLocale());
|
$this->assertEquals('en', $helper->getLocale());
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testGetName()
|
public function testGetName()
|
||||||
{
|
{
|
||||||
$helper = new RequestHelper($this->request);
|
$helper = new RequestHelper($this->requestStack);
|
||||||
|
|
||||||
$this->assertEquals('request', $helper->getName());
|
$this->assertEquals('request', $helper->getName());
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user