Skip to content

Commit

Permalink
[HttpKernel] changed core.view event to use notifyUntil() instead of …
Browse files Browse the repository at this point in the history
…filter() -- as soon as a listener returns a Response, we are done
  • Loading branch information
fabpot committed Feb 21, 2011
1 parent 353177d commit fc372bc
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 6 deletions.
7 changes: 5 additions & 2 deletions src/Symfony/Component/HttpKernel/HttpKernel.php
Expand Up @@ -108,8 +108,11 @@ protected function handleRaw(Request $request, $type = self::MASTER_REQUEST)

// view
if (!$response instanceof Response) {
$event = new Event($this, 'core.view', array('request_type' => $type, 'request' => $request));
$response = $this->dispatcher->filter($event, $response);
$event = new Event($this, 'core.view', array('request_type' => $type, 'request' => $request, 'controller_value' => $response));
$retval = $this->dispatcher->notifyUntil($event);
if ($event->isProcessed()) {
$response = $retval;
}
}

return $this->filterResponse($response, $request, sprintf('The controller must return a response (%s given).', $this->varToString($response)), $type);
Expand Down
12 changes: 8 additions & 4 deletions tests/Symfony/Tests/Component/HttpKernel/HttpKernelTest.php
Expand Up @@ -105,9 +105,11 @@ public function testHandleWhenControllerDoesNotReturnAResponse()
public function testHandleWhenControllerDoesNotReturnAResponseButAViewIsRegistered()
{
$dispatcher = new EventDispatcher();
$dispatcher->connect('core.view', function ($event, $retval)
$dispatcher->connect('core.view', function ($event)
{
return new Response($retval);
$event->setProcessed();

return new Response($event->get('controller_value'));
});
$kernel = new HttpKernel($dispatcher, $this->getResolver(function () { return 'foo'; }));

Expand All @@ -120,9 +122,11 @@ public function testHandleWhenControllerDoesNotReturnAResponseButAViewIsRegister
public function testHandleWhenAViewDoesNotReturnAResponse()
{
$dispatcher = new EventDispatcher();
$dispatcher->connect('core.view', function ($event, $retval)
$dispatcher->connect('core.view', function ($event)
{
return $retval;
$event->setProcessed();

return $event->get('controller_value');
});
$kernel = new HttpKernel($dispatcher, $this->getResolver(function () { return 'foo'; }));

Expand Down

0 comments on commit fc372bc

Please sign in to comment.