Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit ff9d688

Browse files
committed
fixed Request management for FragmentHandler
1 parent 1b98ad3 commit ff9d688

File tree

4 files changed

+11
-56
lines changed

4 files changed

+11
-56
lines changed

src/Symfony/Bridge/Twig/Tests/Extension/HttpKernelExtensionTest.php

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -49,16 +49,8 @@ protected function getFragmentHandler($return)
4949
$strategy->expects($this->once())->method('getName')->will($this->returnValue('inline'));
5050
$strategy->expects($this->once())->method('render')->will($return);
5151

52-
// simulate a master request
53-
$event = $this->getMockBuilder('Symfony\Component\HttpKernel\Event\GetResponseEvent')->disableOriginalConstructor()->getMock();
54-
$event
55-
->expects($this->once())
56-
->method('getRequest')
57-
->will($this->returnValue(Request::create('/')))
58-
;
59-
6052
$renderer = new FragmentHandler(array($strategy));
61-
$renderer->onKernelRequest($event);
53+
$renderer->setRequest(Request::create('/'));
6254

6355
return $renderer;
6456
}

src/Symfony/Bundle/FrameworkBundle/Resources/config/fragment_renderer.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,9 @@
1414

1515
<services>
1616
<service id="fragment.handler" class="%fragment.handler.class%">
17-
<tag name="kernel.event_subscriber" />
1817
<argument type="collection" />
1918
<argument>%kernel.debug%</argument>
19+
<call method="setRequest"><argument type="service" id="request" on-invalid="null" strict="false" /></call>
2020
</service>
2121

2222
<service id="fragment.renderer.inline" class="%fragment.renderer.inline.class%">

src/Symfony/Component/HttpKernel/Fragment/FragmentHandler.php

Lines changed: 8 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,6 @@
1515
use Symfony\Component\HttpFoundation\Response;
1616
use Symfony\Component\HttpFoundation\StreamedResponse;
1717
use Symfony\Component\HttpKernel\Controller\ControllerReference;
18-
use Symfony\Component\HttpKernel\KernelEvents;
19-
use Symfony\Component\HttpKernel\Event\GetResponseEvent;
20-
use Symfony\Component\HttpKernel\Event\FilterResponseEvent;
21-
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
2218

2319
/**
2420
* Renders a URI that represents a resource fragment.
@@ -30,11 +26,11 @@
3026
*
3127
* @see FragmentRendererInterface
3228
*/
33-
class FragmentHandler implements EventSubscriberInterface
29+
class FragmentHandler
3430
{
3531
private $debug;
3632
private $renderers;
37-
private $requests;
33+
private $request;
3834

3935
/**
4036
* Constructor.
@@ -49,7 +45,6 @@ public function __construct(array $renderers = array(), $debug = false)
4945
$this->addRenderer($renderer);
5046
}
5147
$this->debug = $debug;
52-
$this->requests = array();
5348
}
5449

5550
/**
@@ -63,23 +58,13 @@ public function addRenderer(FragmentRendererInterface $renderer)
6358
}
6459

6560
/**
66-
* Stores the Request object.
61+
* Sets the current Request.
6762
*
68-
* @param GetResponseEvent $event A GetResponseEvent instance
63+
* @param Request $request The current Request
6964
*/
70-
public function onKernelRequest(GetResponseEvent $event)
65+
public function setRequest(Request $request = null)
7166
{
72-
array_unshift($this->requests, $event->getRequest());
73-
}
74-
75-
/**
76-
* Removes the most recent Request object.
77-
*
78-
* @param FilterResponseEvent $event A FilterResponseEvent instance
79-
*/
80-
public function onKernelResponse(FilterResponseEvent $event)
81-
{
82-
array_shift($this->requests);
67+
$this->request = $request;
8368
}
8469

8570
/**
@@ -108,7 +93,7 @@ public function render($uri, $renderer = 'inline', array $options = array())
10893
throw new \InvalidArgumentException(sprintf('The "%s" renderer does not exist.', $renderer));
10994
}
11095

111-
return $this->deliver($this->renderers[$renderer]->render($uri, $this->requests[0], $options));
96+
return $this->deliver($this->renderers[$renderer]->render($uri, $this->request, $options));
11297
}
11398

11499
/**
@@ -126,7 +111,7 @@ public function render($uri, $renderer = 'inline', array $options = array())
126111
protected function deliver(Response $response)
127112
{
128113
if (!$response->isSuccessful()) {
129-
throw new \RuntimeException(sprintf('Error when rendering "%s" (Status code is %s).', $this->requests[0]->getUri(), $response->getStatusCode()));
114+
throw new \RuntimeException(sprintf('Error when rendering "%s" (Status code is %s).', $this->request->getUri(), $response->getStatusCode()));
130115
}
131116

132117
if (!$response instanceof StreamedResponse) {
@@ -136,14 +121,6 @@ protected function deliver(Response $response)
136121
$response->sendContent();
137122
}
138123

139-
public static function getSubscribedEvents()
140-
{
141-
return array(
142-
KernelEvents::REQUEST => 'onKernelRequest',
143-
KernelEvents::RESPONSE => 'onKernelResponse',
144-
);
145-
}
146-
147124
// to be removed in 2.3
148125
public function fixOptions(array $options)
149126
{

src/Symfony/Component/HttpKernel/Tests/Fragment/FragmentHandlerTest.php

Lines changed: 1 addition & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,6 @@
1717

1818
class FragmentHandlerTest extends \PHPUnit_Framework_TestCase
1919
{
20-
protected function setUp()
21-
{
22-
if (!class_exists('Symfony\Component\EventDispatcher\EventDispatcher')) {
23-
$this->markTestSkipped('The "EventDispatcher" component is not available');
24-
}
25-
}
26-
2720
/**
2821
* @expectedException \InvalidArgumentException
2922
*/
@@ -102,14 +95,7 @@ protected function getHandler($returnValue, $arguments = array())
10295

10396
$handler = new FragmentHandler();
10497
$handler->addRenderer($renderer);
105-
106-
$event = $this->getMockBuilder('Symfony\Component\HttpKernel\Event\GetResponseEvent')->disableOriginalConstructor()->getMock();
107-
$event
108-
->expects($this->once())
109-
->method('getRequest')
110-
->will($this->returnValue(Request::create('/')))
111-
;
112-
$handler->onKernelRequest($event);
98+
$handler->setRequest(Request::create('/'));
11399

114100
return $handler;
115101
}

0 commit comments

Comments
 (0)