MZZ.Framework 0.3.x: Документация
Разделы

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');
    }
}
 
?>

Как видно из кода - этот контроллер только выводит заранее определённый шаблон. Однако в нём может быть запрограммирована сколь угодно сложная логика для обработки данной ситуации.