@@ -14,20 +14,12 @@ the status code that should be set for the given exception.
|
14 | 14 | Error pages can be customized in two different ways, depending on how much
|
15 | 15 | control you need:
|
16 | 16 |
|
17 |
| -1. Customize the error templates of the different error pages (explained below); |
| 17 | +1. Customize the error templates of the different error pages; |
18 | 18 |
|
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``. |
24 | 20 |
|
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 | +------------------------------- |
31 | 23 |
|
32 | 24 | The default ``ExceptionController`` will either display an
|
33 | 25 | *exception* or *error* page, depending on the setting of the ``kernel.debug``
|
@@ -43,9 +35,12 @@ shown to the end-user.
|
43 | 35 |
|
44 | 36 | The third-party `WebfactoryExceptionsBundle`_ provides a special
|
45 | 37 | 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 |
47 | 39 | ``kernel.debug`` set to ``true``.
|
48 | 40 |
|
| 41 | +Override Error Templates |
| 42 | +------------------------ |
| 43 | + |
49 | 44 | All of the error templates live inside the TwigBundle. To override the
|
50 | 45 | templates, simply rely on the standard method for overriding templates that
|
51 | 46 | live inside a bundle. For more information, see
|
@@ -129,3 +124,32 @@ Symfony uses the following algorithm to determine which template to use:
|
129 | 124 | ``exception.json.twig`` for the JSON exception page.
|
130 | 125 |
|
131 | 126 | .. _`WebfactoryExceptionsBundle`: https://.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