diff options
author | Tristan Darricau <github@nicofuma.fr> | 2015-01-10 17:14:14 +0100 |
---|---|---|
committer | Tristan Darricau <github@nicofuma.fr> | 2015-01-10 17:14:14 +0100 |
commit | 74e8f9bd4e6c55dddb473e1a301d2cae9edb6e50 (patch) | |
tree | 2021983ffd8402d215c43ef838774e78a1103bb9 | |
parent | b00d02496e9ec8281a6e0d6637772c55a7011c60 (diff) | |
download | forums-74e8f9bd4e6c55dddb473e1a301d2cae9edb6e50.tar forums-74e8f9bd4e6c55dddb473e1a301d2cae9edb6e50.tar.gz forums-74e8f9bd4e6c55dddb473e1a301d2cae9edb6e50.tar.bz2 forums-74e8f9bd4e6c55dddb473e1a301d2cae9edb6e50.tar.xz forums-74e8f9bd4e6c55dddb473e1a301d2cae9edb6e50.zip |
[ticket/13361] Support ajax request (send a json response)
PHPBB3-13361
-rw-r--r-- | phpBB/phpbb/event/kernel_exception_subscriber.php | 34 |
1 files changed, 25 insertions, 9 deletions
diff --git a/phpBB/phpbb/event/kernel_exception_subscriber.php b/phpBB/phpbb/event/kernel_exception_subscriber.php index 1e536c1b8f..b6b34675f0 100644 --- a/phpBB/phpbb/event/kernel_exception_subscriber.php +++ b/phpBB/phpbb/event/kernel_exception_subscriber.php @@ -14,6 +14,7 @@ namespace phpbb\event; use Symfony\Component\EventDispatcher\EventSubscriberInterface; +use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\HttpKernel\Exception\HttpExceptionInterface; use Symfony\Component\HttpKernel\KernelEvents; use Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent; @@ -64,18 +65,33 @@ class kernel_exception_subscriber implements EventSubscriberInterface $message = call_user_func_array(array($this->user, 'lang'), array_merge(array($message), $exception->get_parameters())); } - $this->template->assign_vars(array( - 'MESSAGE_TITLE' => $this->user->lang('INFORMATION'), - 'MESSAGE_TEXT' => $message, - )); + if (!$event->getRequest()->isXmlHttpRequest()) + { + $this->template->assign_vars(array( + 'MESSAGE_TITLE' => $this->user->lang('INFORMATION'), + 'MESSAGE_TEXT' => $message, + )); + + $this->template->set_filenames(array( + 'body' => 'message_body.html', + )); + + page_footer(true, false, false); - $this->template->set_filenames(array( - 'body' => 'message_body.html', - )); + $response = new Response($this->template->assign_display('body'), 500); + } + else + { + $data = array(); + $data['message'] = $message; - page_footer(true, false, false); + if (defined('DEBUG')) + { + $data['trace'] = $exception->getTrace(); + } - $response = new Response($this->template->assign_display('body'), 500); + $response = new JsonResponse($message, 500); + } if ($exception instanceof HttpExceptionInterface) { |