Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 4f3d502

Browse filesBrowse files
committed
[FrameworkBundle] removed some more dependencies on the request service
1 parent 8bee688 commit 4f3d502
Copy full SHA for 4f3d502

File tree

Expand file treeCollapse file tree

6 files changed

+74
-26
lines changed
Filter options
Expand file treeCollapse file tree

6 files changed

+74
-26
lines changed

‎UPGRADE-3.0.md

Copy file name to clipboardExpand all lines: UPGRADE-3.0.md
+3Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -178,6 +178,9 @@ UPGRADE FROM 2.x to 3.0
178178

179179
### FrameworkBundle
180180

181+
* The `request` service was removed. You must inject the `request_stack`
182+
service instead.
183+
181184
* The `enctype` method of the `form` helper was removed. You should use the
182185
new method `start` instead.
183186

‎src/Symfony/Bundle/FrameworkBundle/Resources/config/services.xml

Copy file name to clipboardExpand all lines: src/Symfony/Bundle/FrameworkBundle/Resources/config/services.xml
+2Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,8 @@
4343
YourRequestClass to the Kernel.
4444
This service definition only defines the scope of the request.
4545
It is used to check references scope.
46+
47+
This service is deprecated, you should use the request_stack service instead.
4648
-->
4749
<service id="request" scope="request" synthetic="true" synchronized="true" />
4850

‎src/Symfony/Bundle/FrameworkBundle/Resources/config/templating_php.xml

Copy file name to clipboardExpand all lines: src/Symfony/Bundle/FrameworkBundle/Resources/config/templating_php.xml
+2-2Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,12 +67,12 @@
6767

6868
<service id="templating.helper.request" class="%templating.helper.request.class%">
6969
<tag name="templating.helper" alias="request" />
70-
<argument type="service" id="request" strict="false" />
70+
<argument type="service" id="request_stack" />
7171
</service>
7272

7373
<service id="templating.helper.session" class="%templating.helper.session.class%">
7474
<tag name="templating.helper" alias="session" />
75-
<argument type="service" id="request" strict="false" />
75+
<argument type="service" id="request_stack" />
7676
</service>
7777

7878
<service id="templating.helper.router" class="%templating.helper.router.class%">

‎src/Symfony/Bundle/FrameworkBundle/Templating/Helper/RequestHelper.php

Copy file name to clipboardExpand all lines: src/Symfony/Bundle/FrameworkBundle/Templating/Helper/RequestHelper.php
+28-5Lines changed: 28 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313

1414
use Symfony\Component\Templating\Helper\Helper;
1515
use Symfony\Component\HttpFoundation\Request;
16+
use Symfony\Component\HttpFoundation\RequestStack;
1617

1718
/**
1819
* RequestHelper provides access to the current request parameters.
@@ -22,15 +23,24 @@
2223
class RequestHelper extends Helper
2324
{
2425
protected $request;
26+
protected $requestStack;
2527

2628
/**
2729
* Constructor.
2830
*
29-
* @param Request $request A Request instance
31+
* @param Request|RequestStack $requestStack A RequestStack instance or a Request instance
32+
*
33+
* @deprecated since 2.5, passing a Request instance is deprecated and support for it will be removed in 3.0
3034
*/
31-
public function __construct(Request $request)
35+
public function __construct($requestStack)
3236
{
33-
$this->request = $request;
37+
if ($requestStack instanceof Request) {
38+
$this->request = $requestStack;
39+
} elseif ($requestStack instanceof RequestStack) {
40+
$this->requestStack = $requestStack;
41+
} else {
42+
throw new \InvalidArgumentException('RequestHelper only accepts a Request or a RequestStack instance.');
43+
}
3444
}
3545

3646
/**
@@ -45,7 +55,7 @@ public function __construct(Request $request)
4555
*/
4656
public function getParameter($key, $default = null)
4757
{
48-
return $this->request->get($key, $default);
58+
return $this->getRequest()->get($key, $default);
4959
}
5060

5161
/**
@@ -55,7 +65,20 @@ public function getParameter($key, $default = null)
5565
*/
5666
public function getLocale()
5767
{
58-
return $this->request->getLocale();
68+
return $this->getRequest()->getLocale();
69+
}
70+
71+
private function getRequest()
72+
{
73+
if ($this->requestStack) {
74+
if (!$this->requestStack->getCurrentRequest()) {
75+
throw new \LogicException('A Request must be available.');
76+
}
77+
78+
return $this->requestStack->getCurrentRequest();
79+
}
80+
81+
return $this->request;
5982
}
6083

6184
/**

‎src/Symfony/Bundle/FrameworkBundle/Templating/Helper/SessionHelper.php

Copy file name to clipboardExpand all lines: src/Symfony/Bundle/FrameworkBundle/Templating/Helper/SessionHelper.php
+30-8Lines changed: 30 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
namespace Symfony\Bundle\FrameworkBundle\Templating\Helper;
1313

1414
use Symfony\Component\Templating\Helper\Helper;
15-
use Symfony\Component\HttpFoundation\Request;
15+
use Symfony\Component\HttpFoundation\RequestStack;
1616

1717
/**
1818
* SessionHelper provides read-only access to the session attributes.
@@ -22,15 +22,24 @@
2222
class SessionHelper extends Helper
2323
{
2424
protected $session;
25+
protected $requestStack;
2526

2627
/**
2728
* Constructor.
2829
*
29-
* @param Request $request A Request instance
30+
* @param Request|RequestStack $requestStack A RequestStack instance or a Request instance
31+
*
32+
* @deprecated since 2.5, passing a Request instance is deprecated and support for it will be removed in 3.0
3033
*/
31-
public function __construct(Request $request)
34+
public function __construct($requestStack)
3235
{
33-
$this->session = $request->getSession();
36+
if ($requestStack instanceof Request) {
37+
$this->session = $requestStack->getSession();
38+
} elseif ($requestStack instanceof RequestStack) {
39+
$this->requestStack = $requestStack;
40+
} else {
41+
throw new \InvalidArgumentException('RequestHelper only accepts a Request or a RequestStack instance.');
42+
}
3443
}
3544

3645
/**
@@ -43,22 +52,35 @@ public function __construct(Request $request)
4352
*/
4453
public function get($name, $default = null)
4554
{
46-
return $this->session->get($name, $default);
55+
return $this->getSession()->get($name, $default);
4756
}
4857

4958
public function getFlash($name, array $default = array())
5059
{
51-
return $this->session->getFlashBag()->get($name, $default);
60+
return $this->getSession()->getFlashBag()->get($name, $default);
5261
}
5362

5463
public function getFlashes()
5564
{
56-
return $this->session->getFlashBag()->all();
65+
return $this->getSession()->getFlashBag()->all();
5766
}
5867

5968
public function hasFlash($name)
6069
{
61-
return $this->session->getFlashBag()->has($name);
70+
return $this->getSession()->getFlashBag()->has($name);
71+
}
72+
73+
private function getSession()
74+
{
75+
if (null === $this->session) {
76+
if (!$this->requestStack->getMasterRequest()) {
77+
throw new \LogicException('A Request must be available.');
78+
}
79+
80+
$this->session = $this->requestStack->getMasterRequest()->getSession();
81+
}
82+
83+
return $this->session;
6284
}
6385

6486
/**

‎src/Symfony/Bundle/FrameworkBundle/Tests/Templating/Helper/RequestHelperTest.php

Copy file name to clipboardExpand all lines: src/Symfony/Bundle/FrameworkBundle/Tests/Templating/Helper/RequestHelperTest.php
+9-11Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -12,26 +12,24 @@
1212
namespace Symfony\Bundle\FrameworkBundle\Tests\Templating\Helper;
1313

1414
use Symfony\Component\HttpFoundation\Request;
15+
use Symfony\Component\HttpFoundation\RequestStack;
1516
use Symfony\Bundle\FrameworkBundle\Templating\Helper\RequestHelper;
1617

1718
class RequestHelperTest extends \PHPUnit_Framework_TestCase
1819
{
19-
protected $request;
20+
protected $requestStack;
2021

2122
protected function setUp()
2223
{
23-
$this->request = new Request();
24-
$this->request->initialize(array('foobar' => 'bar'));
25-
}
26-
27-
protected function tearDown()
28-
{
29-
$this->request = null;
24+
$this->requestStack = new RequestStack();
25+
$request = new Request();
26+
$request->initialize(array('foobar' => 'bar'));
27+
$this->requestStack->push($request);
3028
}
3129

3230
public function testGetParameter()
3331
{
34-
$helper = new RequestHelper($this->request);
32+
$helper = new RequestHelper($this->requestStack);
3533

3634
$this->assertEquals('bar', $helper->getParameter('foobar'));
3735
$this->assertEquals('foo', $helper->getParameter('bar', 'foo'));
@@ -41,14 +39,14 @@ public function testGetParameter()
4139

4240
public function testGetLocale()
4341
{
44-
$helper = new RequestHelper($this->request);
42+
$helper = new RequestHelper($this->requestStack);
4543

4644
$this->assertEquals('en', $helper->getLocale());
4745
}
4846

4947
public function testGetName()
5048
{
51-
$helper = new RequestHelper($this->request);
49+
$helper = new RequestHelper($this->requestStack);
5250

5351
$this->assertEquals('request', $helper->getName());
5452
}

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.