/**
  * {inheritdoc}.
  */
 public function showAction(Request $request, FlattenException $exception, DebugLoggerInterface $logger = null)
 {
     //always enforce non-debug mode
     $this->debug = false;
     $response = parent::showAction($request, $exception, $logger);
     $response->setStatusCode($exception->getStatusCode());
     $response->headers->set(ResponseHeaders::ERROR_HANDLED_HEADER, true);
     return $response;
 }
예제 #2
0
 public function showAction(Request $request, FlattenException $exception, DebugLoggerInterface $logger = null)
 {
     if ($exception->getClass() == MailException::class) {
         return new Response($this->twig->render('CantigaCoreBundle:Exception:mail-exception.html.twig', array('message' => $exception->getMessage())), 501);
     }
     return parent::showAction($request, $exception, $logger);
 }
 public function testFallbackToHtmlIfNoTemplateForRequestedFormat()
 {
     $twig = new \Twig_Environment(new \Twig_Loader_Array(array('TwigBundle:Exception:error.html.twig' => 'html')));
     $request = Request::create('whatever');
     $request->setRequestFormat('txt');
     $exception = FlattenException::create(new \Exception());
     $controller = new ExceptionController($twig, false);
     $response = $controller->showAction($request, $exception);
     $this->assertEquals('html', $request->getRequestFormat());
 }
예제 #4
0
 public function showAction(Request $request, FlattenException $exception, DebugLoggerInterface $logger = null, $format = 'html')
 {
     $code = $exception->getStatusCode();
     if (!$this->debug) {
         $template = new TemplateReference(sprintf('@SymEdit/Exception/%d.html.twig', $code));
         if ($this->templateExists($template)) {
             return new Response($this->twig->render($template, ['status_code' => $code, 'status_text' => isset(Response::$statusTexts[$code]) ? Response::$statusTexts[$code] : '', 'exception' => $exception, 'logger' => $logger]));
         }
     }
     return parent::showAction($request, $exception, $logger, $format);
 }
 public function testOnlyClearOwnOutputBuffers()
 {
     $flatten = $this->getMock('Symfony\\Component\\HttpKernel\\Exception\\FlattenException');
     $flatten->expects($this->once())->method('getStatusCode')->will($this->returnValue(404));
     $twig = $this->getMockBuilder('\\Twig_Environment')->disableOriginalConstructor()->getMock();
     $twig->expects($this->any())->method('render')->will($this->returnValue($this->getMock('Symfony\\Component\\HttpFoundation\\Response')));
     $twig->expects($this->any())->method('getLoader')->will($this->returnValue($this->getMock('\\Twig_LoaderInterface')));
     $request = Request::create('/');
     $request->headers->set('X-Php-Ob-Level', 1);
     $controller = new ExceptionController($twig, false);
     $controller->showAction($request, $flatten);
 }
예제 #6
0
 /**
  * {@inheritdoc}
  */
 public function showAction(Request $request, FlattenException $exception, DebugLoggerInterface $logger = null)
 {
     $code = $exception->getStatusCode();
     $showException = $request->attributes->get('showException', $this->debug);
     $template = $this->requestAnalyzer->getWebspace()->getTheme()->getErrorTemplate($code);
     if ($showException || $request->getRequestFormat() !== 'html' || $template === null) {
         return parent::showAction($request, $exception, $logger);
     }
     $currentContent = $this->getAndCleanOutputBuffering($request->headers->get('X-Php-Ob-Level', -1));
     $parameter = ['status_code' => $code, 'status_text' => isset(Response::$statusTexts[$code]) ? Response::$statusTexts[$code] : '', 'exception' => $exception, 'currentContent' => $currentContent];
     $data = $this->parameterResolver->resolve($parameter, $this->requestAnalyzer);
     return new Response($this->twig->render($template, $data), $code);
 }
 /**
  * {@inheritDoc}
  * @see Symfony\Bundle\TwigBundle\Controller\ExceptionController::showAction
  */
 public function showAction(Request $request, FlattenException $exception, DebugLoggerInterface $logger = null)
 {
     if ($exception->getStatusCode() != 404 || $request->getRequestFormat() != 'html') {
         return parent::showAction($request, $exception, $logger);
     }
     // 404 html
     $randomLine = $this->lineRepo->getRandom(1)[0];
     // from parent
     $currentContent = $this->getAndCleanOutputBuffering($request->headers->get('X-Php-Ob-Level', -1));
     $showException = $request->attributes->get('showException', $this->debug);
     // As opposed to an additional parameter, this maintains BC
     $code = $exception->getStatusCode();
     return new Response($this->twig->render($this->findTemplate($request, $request->getRequestFormat(), $code, $showException), ['random_line' => $randomLine, 'status_code' => $code, 'status_text' => isset(Response::$statusTexts[$code]) ? Response::$statusTexts[$code] : '', 'exception' => $exception, 'logger' => $logger, 'currentContent' => $currentContent]));
 }
 /**
  * @param Request              $request
  * @param FlattenException     $exception
  * @param DebugLoggerInterface $logger
  * @param string               $_format
  * @return Response
  */
 public function showAction(Request $request, FlattenException $exception, DebugLoggerInterface $logger = null, $_format = 'html')
 {
     $code = $exception->getStatusCode();
     if (404 !== $code) {
         return parent::showAction($request, $exception, $logger, $_format);
     }
     $currentContent = $this->getAndCleanOutputBuffering($request->headers->get('X-Php-Ob-Level', -1));
     $groupedSuggestions = array();
     foreach ($this->suggestionProviders as $item) {
         $suggestions = $item['provider']->create($request);
         $groupedSuggestions[$item['group']] = isset($groupedSuggestions[$item['group']]) ? array_merge($groupedSuggestions[$item['group']], $suggestions) : $suggestions;
     }
     return new Response($this->twig->render($this->findTemplate($request, $_format, $code, $this->debug), array('status_code' => $code, 'status_text' => isset(Response::$statusTexts[$code]) ? Response::$statusTexts[$code] : '', 'exception' => $exception, 'logger' => $logger, 'currentContent' => $currentContent, 'best_matches' => $groupedSuggestions)), $code);
 }
 public function showAction(Request $request, FlattenException $exception, DebugLoggerInterface $logger = null, $format = 'html')
 {
     if ('Trez\\LogicielTrezBundle\\Exception\\LockedException' === $exception->getClass()) {
         $this->session->getFlashBag()->set('error', "Vous ne pouvez pas éditer un exercice/budget verrouillé ou ses fils");
         return new RedirectResponse($this->request->getRequestUri(), 302);
     }
     if ('Symfony\\Component\\HttpKernel\\Exception\\AccessDeniedHttpException' === $exception->getClass()) {
         $this->session->getFlashBag()->set('error', "Vous n'avez pas les privilèges nécessaires pour effectuer cette action !");
         if ($this->securityContext->isGranted('ROLE_USER') === true) {
             return new Response($this->twig->render('TrezLogicielTrezBundle:Default:index.html.twig', array()));
         } else {
             return new Response("Vous n'avez pas les privilèges nécessaires pour afficher cette page !");
         }
     }
     // else default behavior
     return parent::showAction($exception, $logger, $format);
 }
예제 #10
0
 public function showAction(FlattenException $exception, DebugLoggerInterface $logger = null, $format = 'html')
 {
     $this->exceptionClass = $exception->getClass();
     return parent::showAction($exception, $logger, $format);
 }
 public function showAction(Request $request, FlattenException $exception, DebugLoggerInterface $logger = null)
 {
     $this->exceptionClass = $exception->getClass();
     return parent::showAction($request, $exception, $logger);
     // TODO: Change the autogenerated stub
 }