Skip to content

Commit 3c95af5

Browse files
committed
feature #3928 Reorder page from simple to advanced (rebased) (clemens-tolboom)
This PR was submitted for the 2.4 branch but it was merged into the 2.3 branch instead (closes #3928). Discussion ---------- Reorder page from simple to advanced (rebased) As #3910 got meshed up here is a cherrypicked version. === As a followup on symfony/symfony#10980 I want to propose to reorder the page as the obvious way should come first. I took me way to long to find the correct way :p I added two headers - The default ExceptionController - Override error templates in order to introduce how override works and moved the controller override to the bottom as that is more advanced. Fixes #3910 Commits ------- 13f5ec6 Fixed @weaverryan: backticks and rephase method overrides. 3ad1c6c Added feedback from @weaverryan with a little move around. 10ed835 Fixed feedback from @xabbuh: Templates 67e89af Fixed feedback from @xabbuh 334492a Reorder page from simple to advanced
2 parents 7937864 + b87f420 commit 3c95af5

File tree

1 file changed

+37
-13
lines changed

1 file changed

+37
-13
lines changed

cookbook/controller/error_pages.rst

Lines changed: 37 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -14,20 +14,12 @@ the status code that should be set for the given exception.
1414
Error pages can be customized in two different ways, depending on how much
1515
control you need:
1616

17-
1. Customize the error templates of the different error pages (explained below);
17+
1. Customize the error templates of the different error pages;
1818

19-
2. Replace the default exception controller ``twig.controller.exception:showAction``
20-
with your own controller and handle it however you want (see
21-
:ref:`exception_controller in the Twig reference <config-twig-exception-controller>`).
22-
The default exception controller is registered as a service - the actual
23-
class is ``Symfony\Bundle\TwigBundle\Controller\ExceptionController``.
19+
2. Replace the default exception controller ``twig.controller.exception:showAction``.
2420

25-
.. tip::
26-
27-
The customization of exception handling is actually much more powerful
28-
than what's written here. An internal event, ``kernel.exception``, is thrown
29-
which allows complete control over exception handling. For more
30-
information, see :ref:`kernel-kernel.exception`.
21+
The default ExceptionController
22+
-------------------------------
3123

3224
The default ``ExceptionController`` will either display an
3325
*exception* or *error* page, depending on the setting of the ``kernel.debug``
@@ -43,9 +35,12 @@ shown to the end-user.
4335

4436
The third-party `WebfactoryExceptionsBundle`_ provides a special
4537
test controller that allows you to display your custom error
46-
pages for arbitrary HTTP status codes even with
38+
pages for arbitrary HTTP status codes even with
4739
``kernel.debug`` set to ``true``.
4840

41+
Override Error Templates
42+
------------------------
43+
4944
All of the error templates live inside the TwigBundle. To override the
5045
templates, simply rely on the standard method for overriding templates that
5146
live inside a bundle. For more information, see
@@ -129,3 +124,32 @@ Symfony uses the following algorithm to determine which template to use:
129124
``exception.json.twig`` for the JSON exception page.
130125

131126
.. _`WebfactoryExceptionsBundle`: https://github.com/webfactory/exceptions-bundle
127+
128+
Replace the default Exception Controller
129+
----------------------------------------
130+
131+
If you need a little more flexibility beyond just overriding the template
132+
(e.g. you need to pass some additional variables into your template),
133+
then you can override the controller that renders the error page.
134+
135+
The default exception controller is registered as a service - the actual
136+
class is ``Symfony\Bundle\TwigBundle\Controller\ExceptionController``.
137+
138+
To do this, create a new controller class and make it extend Symfony's default
139+
``Symfony\Bundle\TwigBundle\Controller\ExceptionController`` class.
140+
141+
There are several methods you can override to customize different parts of how
142+
the error page is rendered. You could, for example, override the entire
143+
``showAction`` or just the ``findTemplate`` method, which locates which
144+
template should be rendered.
145+
146+
To make Symfony use your exception controller instead of the default, set the
147+
:ref:`twig.exception_controller <config-twig-exception-controller>` option
148+
in app/config/config.yml.
149+
150+
.. tip::
151+
152+
The customization of exception handling is actually much more powerful
153+
than what's written here. An internal event, ``kernel.exception``, is thrown
154+
which allows complete control over exception handling. For more
155+
information, see :ref:`kernel-kernel.exception`.

0 commit comments

Comments
 (0)