5.4 Обработка ошибки 404 в модулях
Перехват и обработка ошибки 404 производится mzz автоматически. В случае, если не найден запрашиваемый объект, будет запущен simple404Controller, в обязанности которого входит отображение сообщения об ошибке. Заменить стандартное сообщение, можно двумя путями:
1. Переопределение класса simple404Controller. Для этого следует в каталоге приложения (по умолчанию - www) создать подкаталог simple, а в этот каталог положить файл simple404Controller.php, в котором определить "заново" этот класс. Теперь встроенный механизм резолверов при запросе файла simple404Controller.php будет запрашивать только что созданный файл.
Последнее предложение можно считать справедливым лишь в случае, когда был использован композитный резолвер по умолчанию, либо его поведение сходно со стандартным (поиск файлов сначала в каталоге с проектом, затем - в системном каталоге).
Не забывайте чистить кэш! Резолвер по умолчанию является кеширующим, и до того, как файл с кешем резолвера (tmp/resolver.cache) не будет удалён, по запросу файла simple404Controller.php будет резолвиться системный файл.
В этом случае будет изменено отображение 404 страницы для всего сайта.
2. Создание собственного класса-обработчика. Приведём пример для модуля меню:
<?php class menu404Controller extends simpleController { protected function getView() { return $this->smarty->fetch('menu/notfound.tpl'); } } ?>
Как видно из кода - этот контроллер только выводит заранее определённый шаблон. Однако в нём может быть запрограммирована сколь угодно сложная логика для обработки данной ситуации.