/** * filter the `core.response` event to decorated the action * * @param \Symfony\Component\EventDispatcher\Event $event * @return \Symfony\Component\HttpFoundation\Response */ public function onCoreResponse(Event $event) { $response = $event->getResponse(); $requestType = $event->getRequestType(); $request = $event->getRequest(); if ($this->isDecorable($request, $requestType, $response)) { $page = $this->defineCurrentPage($request); // only decorate hybrid page and page with decorate = true if ($page && $page->isHybrid() && $page->getDecorate()) { $parameters = array('content' => $response->getContent()); $response = $this->renderPage($page, $parameters, $response); } } return $response; }
private function postDispatch($eventName, Event $event) { switch ($eventName) { case KernelEvents::CONTROLLER: $this->stopwatch->start('controller', 'section'); break; case KernelEvents::RESPONSE: $token = $event->getResponse()->headers->get('X-Debug-Token'); $this->stopwatch->stopSection($token); if (HttpKernelInterface::MASTER_REQUEST === $event->getRequestType()) { // The profiles can only be updated once they have been created // that is after the 'kernel.response' event of the main request $this->updateProfiles($token, true); } break; case KernelEvents::TERMINATE: $token = $event->getResponse()->headers->get('X-Debug-Token'); $this->stopwatch->stopSection($token); // The children profiles have been updated by the previous 'kernel.response' // event. Only the root profile need to be updated with the 'kernel.terminate' // timing informations. $this->updateProfiles($token, false); break; } foreach ($this->wrappedListeners[$this->id] as $wrapped) { $this->dispatcher->removeListener($eventName, $wrapped); $this->dispatcher->addListener($eventName, $this->wrappedListeners[$this->id][$wrapped]); } unset($this->wrappedListeners[$this->id]); }
private function postDispatch($eventName, $eventId, Event $event) { switch ($eventName) { case KernelEvents::CONTROLLER: $this->stopwatch->start('controller', 'section'); break; case KernelEvents::RESPONSE: $token = $event->getResponse()->headers->get('X-Debug-Token'); $this->stopwatch->stopSection($token); if (HttpKernelInterface::MASTER_REQUEST === $event->getRequestType()) { // The profiles can only be updated once they have been created // that is after the 'kernel.response' event of the main request $this->updateProfiles($token, true); } break; case KernelEvents::TERMINATE: $token = $event->getResponse()->headers->get('X-Debug-Token'); // In the special case described in the `preDispatch` method above, the `$token` section // does not exist, then closing it throws an exception which must be caught. try { $this->stopwatch->stopSection($token); } catch (\LogicException $e) { } // The children profiles have been updated by the previous 'kernel.response' // event. Only the root profile need to be updated with the 'kernel.terminate' // timing information. $this->updateProfiles($token, false); break; } foreach ($this->wrappedListeners[$eventId] as $wrapped) { $this->dispatcher->removeListener($eventName, $wrapped); $this->dispatcher->addListener($eventName, $this->wrappedListeners[$eventId][$wrapped]); } unset($this->wrappedListeners[$eventId]); }
/** * Runs after filters. * * Handler for onKernelResponse. */ public function onKernelResponse(Event $event) { if (HttpKernelInterface::MASTER_REQUEST === $event->getRequestType()) { $this['dispatcher']->dispatch(SilexEvents::AFTER, $event); } }
/** * Method call on the first request * @param Event $event The kernel request event */ public function onKernelRequest(Event $event) { if (HttpKernelInterface::MASTER_REQUEST == $event->getRequestType()) { $this->cacheResetter->setRequest($event->getRequest()); } }