2010-08-24 1 views
2

Я новичок в MVC и теперь я читаю о CakePHP, ZendFramework и т.д.Одна 404 страница для администратора и других 404 страниц для других контроллеров, как?

Я не могу понять, как я могу установить одну 404 страницы для отсутствующих методов контроллера администратора и другой страницы 404 для всех остальных диспетчерских методы.

Вопрос не о ZendFramework, CakePHP и т. Д. - это о MVC. Я пишу свой собственный MVC, и я не могу понять, как реализовать эту функцию?

ответ

2

Zend Framework следует простой подход.

По умолчанию используется плагин Front Controller под названием ErrorHandler. Когда исключение выбрасывается из любого места в вашем приложении, исключение ловутся плагином ErrorHandler.

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

Так что я предполагаю, что любое решение может быть принято на вашем ErrorController, где вы могли бы принять во внимание модуль/контроллер/точку действия, которые были выбраны для исключения.

1

В MVC может быть концепция разрешений, в основном это считается аутентификацией, но это не обязательно так.

Если у вас есть контроллер администратора, то мы предполагаем, что вы знаете, кто пользователи, когда они посещают ваш сайт. Таким образом, мы можем использовать это, чтобы выяснить, какую страницу 404 использовать.

Другая концепция - это «страницы» администратора и страницы сайта, поэтому, если кто-то просматривает ваш/администратор/раздел сайта, появляется 404 страницы администратора, в противном случае отображаются обычные 404 страницы.

+0

Да, это ясно для меня. Но как я могу реализовать эту функцию в коде? Например, у меня есть ErrorController; это 404 метод должен определить, какой контроллер был вызван, и в зависимости от этой информации - показать одну или другую страницу 404? Или как? Мы можем даже поставить это в preDispatcher FrontController, но, насколько я понимаю, это не очень хорошая практика. – Kirzilla

+0

Я ответил так из-за вашего заявления «Вопрос не о ZendFramework, CakePHP и т. Д. - это о MVC». Модели могут работать, но, как вы сказали, если у вас есть ErrorController, который может справиться с этим, не так ли? Если вы используете пользователей, затем просмотрите права пользователей. Если они представляют собой admin show, контроллеры админов для разделов админов (если они построены так). Если вы делаете это как разделы, если контроллер с ошибкой x, то отображает нормальный контроллер ошибок, если это xAdmin, тогда отобразите ошибку администратора –

1

Одним из решений, используемым Zend Framework, является концепция модулей. Модули представляют собой группы контроллеров, моделей, представлений и все их необходимые компоненты, которые обеспечивают определенную функциональность. Я обычно исполняю основную реализацию MVC, а затем добавляю каталог модулей для моей реализации MVC для администратора. Чтобы увеличить повторное использование кода, вы можете расширить код кода приложения.

Более подробная информация о стратегии позади модулей MVC можно найти здесь: http://framework.zend.com/manual/en/zend.controller.modular.html

Смежные вопросы