/** * Converts an Exception to a Response. * * @param FlattenException $exception A FlattenException instance * @param DebugLoggerInterface $logger A DebugLoggerInterface instance * @param string $format The format to use for rendering (html, xml, ...) * @param Boolean $embedded Whether the rendered Response will be embedded or not * * @throws \InvalidArgumentException When the exception template does not exist */ public function exceptionAction(FlattenException $exception, DebugLoggerInterface $logger = null, $format = 'html', $embedded = false) { $this->container->get('request')->setRequestFormat($format); $currentContent = ''; while (false !== ($content = ob_get_clean())) { $currentContent .= $content; } if ('Symfony\\Component\\Security\\Exception\\AccessDeniedException' === $exception->getClass()) { $exception->setStatusCode($exception->getCode()); } $templating = $this->container->get('templating'); $template = 'FrameworkBundle:Exception:' . ($this->container->get('kernel')->isDebug() ? 'exception.php' : 'error.php'); if (!$templating->exists($template)) { $this->container->get('request')->setRequestFormat('html'); } $response = $templating->renderResponse($template, array('exception' => $exception, 'logger' => $logger, 'currentContent' => $currentContent, 'embedded' => $embedded)); $response->setStatusCode($exception->getStatusCode()); return $response; }
/** * Converts an Exception to a Response. * * @param FlattenException $exception A FlattenException instance * @param DebugLoggerInterface $logger A DebugLoggerInterface instance * @param string $format The format to use for rendering (html, xml, ...) * * @throws \InvalidArgumentException When the exception template does not exist */ public function exceptionAction(FlattenException $exception, DebugLoggerInterface $logger = null, $format = 'html') { $this->container->get('request')->setRequestFormat($format); $currentContent = ''; while (ob_get_level()) { $currentContent .= ob_get_clean(); } if ('Symfony\Component\Security\Exception\AccessDeniedException' === $exception->getClass()) { $exception->setStatusCode($exception->getCode()); } $template = $this->container->get('kernel')->isDebug() ? 'exception' : 'error'; if ($this->container->get('kernel')->isDebug() && 'html' == $format) { $template = 'exception_full'; } $template = 'FrameworkBundle:Exception:'.$template.'.twig'; $templating = $this->container->get('templating'); if (!$templating->exists($template)) { $this->container->get('request')->setRequestFormat('html'); } $response = $templating->renderResponse( $template, array( 'exception' => $exception, 'logger' => $logger, 'currentContent' => $currentContent, ) ); $response->setStatusCode($exception->getStatusCode()); return $response; }