Skip to content

Commit a29048a

Browse files
committed
[ticket/14933] Make "route not found" more user-friendly
PHPBB3-14933
1 parent 16da17a commit a29048a

3 files changed

Lines changed: 17 additions & 2 deletions

File tree

phpBB/config/default/container/services_event.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ services:
99
arguments:
1010
- '@template'
1111
- '@language'
12+
- '%?debug.exceptions'
1213
tags:
1314
- { name: kernel.event_subscriber }
1415

phpBB/language/en/common.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -556,6 +556,7 @@
556556
),
557557
'OPTIONS' => 'Options',
558558

559+
'PAGE_NOT_FOUND' => 'The requested page could not be found.',
559560
'PAGE_OF' => 'Page <strong>%1$d</strong> of <strong>%2$d</strong>',
560561
'PAGE_TITLE_NUMBER' => 'Page %s',
561562
'PASSWORD' => 'Password',

phpBB/phpbb/event/kernel_exception_subscriber.php

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,20 @@
1616
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
1717
use Symfony\Component\HttpFoundation\JsonResponse;
1818
use Symfony\Component\HttpKernel\Exception\HttpExceptionInterface;
19+
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
1920
use Symfony\Component\HttpKernel\KernelEvents;
2021
use Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent;
2122
use Symfony\Component\HttpFoundation\Response;
2223

2324
class kernel_exception_subscriber implements EventSubscriberInterface
2425
{
26+
/**
27+
* Set to true to show full exception messages
28+
*
29+
* @var bool
30+
*/
31+
protected $debug;
32+
2533
/**
2634
* Template object
2735
*
@@ -45,8 +53,9 @@ class kernel_exception_subscriber implements EventSubscriberInterface
4553
* @param \phpbb\template\template $template Template object
4654
* @param \phpbb\language\language $language Language object
4755
*/
48-
public function __construct(\phpbb\template\template $template, \phpbb\language\language $language)
56+
public function __construct(\phpbb\template\template $template, \phpbb\language\language $language, $debug = false)
4957
{
58+
$this->debug = $debug || defined('DEBUG');
5059
$this->template = $template;
5160
$this->language = $language;
5261
$this->type_caster = new \phpbb\request\type_cast_helper();
@@ -69,6 +78,10 @@ public function on_kernel_exception(GetResponseForExceptionEvent $event)
6978
{
7079
$message = $this->language->lang_array($message, $exception->get_parameters());
7180
}
81+
else if (!$this->debug && $exception instanceof NotFoundHttpException)
82+
{
83+
$message = $this->language->lang('PAGE_NOT_FOUND');
84+
}
7285

7386
// Show <strong> text in bold
7487
$message = preg_replace('#&lt;(/?strong)&gt;#i', '<$1>', $message);
@@ -99,7 +112,7 @@ public function on_kernel_exception(GetResponseForExceptionEvent $event)
99112
$data['message'] = $message;
100113
}
101114

102-
if (defined('DEBUG'))
115+
if ($this->debug)
103116
{
104117
$data['trace'] = $exception->getTrace();
105118
}

0 commit comments

Comments
 (0)