На каждом проекте не забываем настраивать обработчики ошибок, а то получим вот такие сюрпризы на продакшен сервере для страниц ошибок 404 и 500:
Настройка собственного действия и шаблона ошибки 404
1) Активируем опции error_404_module и error_404_action в конфигурационном файле settings.yml
all: .actions: error_404_module: error # Указываем наш модуль error_404_action: error404 # и действие
2) Создаем наш шаблон ошибки 404 error404Success.php
<html> <head> <title>Ошибка 404</title> </head> <body> Упс! Страница не найдена! </body> </html>
3) Очищаем кеш проекта
php symfony cc
Учтите, что в dev-режиме отработает обработчик ошибки 404 Symfony, а не наш. Такой небольшой нюанс.
Выводим собственную страницу для ошибок 500
За это отвечает файл error.html.php. Оригинал файла можно найти в исходниках Symfony “/symfony-1.2/lib/exception/data/error.html.php”. Файл надо создать в папке нашего проекта “config/error/error.html.php”
Настраиваем собственный шаблон страницы при отключении нашего приложения (application)
Когда это может потребоваться? Например, Вам требуется обновить Ваш сайт, и это заберет некоторое время. В этом случае отключаем наш сайт и выводим красивую страничку, мол у нас проводятся “технические работы”. Весьма полезная штука.
Что надо чтобы отключить/включить наше приложение:
1) Создаем свой шаблон unavailable.php и кладем его в одну из следующих директорий:
• /site/apps/frontend/config/unavailable.php
• /site/config/unavailable.php
• /site/config/web/errors/unavailable.php
Тут есть один момент. Можно спросить: “А зачем нам сохранять файл в папке frontend?”. Это весьма полезная особенность, т.к. в этом случае мы можем изменить вывод этой страницы для www и wap, что очень важно.
2) Включаем опцию check_lock в файле settings.yml. После того как закончили все работы и включили приложение, не забудьте отключить эту опцию, т.к. при каждой загрузке страницы осуществляется проверка состояния приложения.
.settings: check_lock: on
3) Отключаем наше приложение
php symfony project:disable frontend prod
4) Очищаем кеш проекта и наше приложение отключено
php symfony cc
Для включения приложения выполняем следующие команды:
php symfony project:enable frontend prod php symfony cc
Что классно, то что frontend_dev.php – не отключается, т.е. можно проверить работу сайта в отладочном режиме, или отключить и этот режим. Не забываем удалять этот файл на продакшен сервере :).
Материал по теме:
• The Definitive Guide to symfony: Chapter 6 – Inside The Controller Layer
• The Definitive Guide to symfony: Chapter 19 – Mastering Symfony’s Configuration Files
• The symfony Cookbook: How to customize Error Templates
• Completely custom Symfony error pages