Этап
Открыта
Тип
Задача
Приоритет
Обычный
Трудоемкость
Обычная
Создана
Дата создания
2 года назад
Назначена
Обновлена
22 дня назад

Сейчас все роуты в случае исключения возвращают Наши html-страницы ошибки. Но у нас появляются ajax-роуты возвращающие json, и если в них все упало, ошибку им тоже следует вернуть в json. Чтобы они сами все в try {} catch не оборачивали, необходим какой-то универсальный листенер. Ну и наш нынешний ErrorController поправить, кажется он все таки справляется не всегда. Да и что делать сторонним http-client с нашими кастомными http-кодами, вроде 700-800?

Пока видится так:

  • Контроллеры должны ставить атрибут о том, что они ajax или api
  • ErrorListener должен этот факт как-то передавать ErrorController’у, чтобы он переключал режим в котором формирует ответ
  • Все наше дерево исключений надо переформатиовать так, чтобы оно всегда отдавало обычных http-код 40х-50х, и помимо него например string enum и его перевод.
  • Контроллер будет формировать ответ с нужным http-кодом, и отрисовывать остальное или в виде html или в виде json

Для этого надо вытащить реальное исключение из FlattenEception

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

В процессе надо переделать ErrorCodesEnum на phpEnum (и вычеркнуть из tndt-140)

Панель управления