Настройка всех ошибок Symfony 1.4

Извините за мой английский и пишу через переводчика.

Я здесь новенький, и я немного потерялся в том, что хочу, может быть, вы поможете мне, если они захотят, как объясняется здесь:

Я хочу настроить все возможные ошибки (любой код состояния, который является ошибкой. 404, 500, 204, 301 и т. Д.), А также показать предложения, основанные на «модуле» и / или «действии». откуда произошла ошибка.

Я также хотел бы сказать по приложению перенаправления файлов "setting.yml" что-то вроде этого:

error_404_module: common
error_404_action: errors
error_500_module: common
error_500_action: errors
error_204_module: common
error_204_action: errors
error_301_module: common
error_301_action: errors
........

В «app / frontend / modules / common» в «action.class.php» определите «executeErrors», в котором я получаю код состояния, который произошел, и модуль, в котором произошла ошибка, или, за исключением well, получение частичного отображения » app / frontend / modules / common / templates / _errorXXXSuccess.php "и часть предложения о том, что я ищу и извлекаю модуль" referer ", в котором произошла ошибка.

Что ж, в этом идея, динамический контент для разных типов ошибок в разных обстоятельствах и отлично работает с кодами типов 404, но не с остальными ...

Я читал, что мог бы поместить меня в середину события, создав файл «config / error.html.php» и «config / exception.html.php». Действительно, если я выдаю такую ​​ошибку 500 и вручную эти файлы будут выполнены. Проблема в том, что оттуда я не могу получить доступ к переменным из Symfony. Потому что, если это так, я мог бы вызвать «общие / ошибки» и плохой отправить в качестве параметров код состояния ошибки и модуль, в котором она произошла, но это не так. Оттуда все, что я могу сделать, это поиграть с $ _SERVER и routing.yml, но не могу получить хороших результатов, потому что среда смешана с Development Production (/frontend_dev.php), и этого я также хочу избежать.

То есть я хочу получить, как в "setting.yml" выполняется "error_404_module" и "error_404_action", но с разными кодами ошибок. Таким образом, позволяя мне показывать свои пользовательские страницы в производственной среде на основе «ошибки или исключения» и / или «модуля или действия», где ошибка была выпущена из производственной среды, и в случае нахождения в режиме разработки (/frontend_dev.php/ .. ..), покажите Symfony Dispatch.

Конечно, жизнь сложна, и у нее есть более простой способ делать то, что я хочу, но после тысяч комбинаций не получается нужный результат. Даже если symfony может не разрешать другие типы перенаправления ошибок из "setting.yml", это потому, что они зарезервированы для него или что-то в этом роде. Я не понимаю.

Пожалуйста, помогите мне, потому что здесь нет документации, которую можно было бы найти и защитить, по крайней мере, мы оставили общедоступными для тех, кто хочет что-то сделать.

Большое спасибо и привет!


person Z3R0N3    schedule 09.04.2012    source источник


Ответы (1)


Во-первых, вы не можете заставить Symfony перехватывать все ошибки. Некоторые из ошибок могут быть ошибками сервера, и запрос даже не попадет в ваше приложение. Вы можете воспроизвести некоторые из них, явно задавая ответы в symfony, но мне не обязательно иметь дело со всеми из них.

Что касается точного ответа: вы должны использовать слушателя, чтобы привязать свои ошибки к классу, который обрабатывает их в соответствии с вашими потребностями. Подробнее о реализации см. https://stackoverflow.com/a/7077818/580167.

person wdev    schedule 21.04.2012
comment
Здравствуйте, вы ссылаетесь на статью, к которой я использую столько справок, но я не понимаю, где мне определить класс? Должен ли я создать новый файл в маршруте X или добавить его в другой файл? В статье также говорится, что мне нужно вызвать $ this- ›dispatcher-› connect .... в /config/ProjectConfiguration.class.php. Я предполагаю, что это в настройке общедоступной функции, верно? Вы тоже могли бы сделать это из /frontend/config/frontendConfiguration.class.php? Извините, но я новичок в Symfony ... извините и спасибо! - person Z3R0N3; 24.04.2012