Страница ошибки на основе хоста

С Symfony2 легко сопоставлять маршруты на основе хоста (подробности здесь http://symfony.com/doc/current/components/routing/hostname_pattern.html).

Я хотел бы иметь разные страницы ошибок в зависимости от хоста.

Ошибка 404 на сайте example.com -> один макет
Ошибка 404 на сайте test.com -> другой макет

Как бы Вы это сделали ?


person Ka.    schedule 19.01.2015    source источник


Ответы (1)


Если у вас есть доступ к конфигурации ваших веб-серверов, вы можете объявить имя шаблона как переменную среды, которую Symfony может выбрать и использовать в качестве параметра приложения.

Пример: настройте следующий ENV в Apache для первого (виртуального) хоста:

SetEnv SYMFONY__ERROR_TEMPLATE SomeBundle:error:template1.html.twig

... и для второго:

SetEnv SYMFONY__ERROR_TEMPLATE SomeBundle:error:template2.html.twig

Затем вы можете ввести этот параметр в любой сервис, который вы используете для отображения страницы с ошибкой (скорее всего, прослушиватель исключений):

# Your exception listener
your_exception_listener:
    class:     SomeClass
    arguments:
        - @dependency1
        - ...
        - %error_template%

Затем вы можете просто отобразить шаблон, переданный в качестве параметра, и удалить любую жестко запрограммированную ссылку на шаблон в коде.

Таким образом, запустив один и тот же код на обоих хостах, вы можете отобразить два разных макета страниц ошибок.

ПРИМЕЧАНИЕ. Вам также необходимо помнить об установке переменной среды с тем же именем в вашей оболочке, иначе вы получите исключения, когда приложение запускается в режиме CLI.

Дополнительная информация здесь: http://symfony.com/doc/current/cookbook/configuration/external_parameters.html

person Andrea Sprega    schedule 19.01.2015