Php 一个404页用于管理控制器,另一个404页用于其他控制器,如何?

Php 一个404页用于管理控制器,另一个404页用于其他控制器,如何?,php,model-view-controller,Php,Model View Controller,我对MVC非常陌生,现在我正在阅读CakePHP、ZendFramework等 我不明白如何设置一个404页来表示缺少的管理控制器方法,以及其他404页来表示所有其他控制器的方法 问题不在于ZendFramework、CakePHP等,而在于MVC。 我正在编写自己的MVC,但我不知道如何实现此功能?在MVC中可以有权限的概念,大多数情况下它被认为是身份验证,但不一定是这样 如果您有一个管理员控制器,那么我们假设您知道用户在访问您的站点时是谁。因此,我们可以使用它来确定使用哪个404页面 另一个

我对MVC非常陌生,现在我正在阅读CakePHP、ZendFramework等

我不明白如何设置一个404页来表示缺少的管理控制器方法,以及其他404页来表示所有其他控制器的方法

问题不在于ZendFramework、CakePHP等,而在于MVC。
我正在编写自己的MVC,但我不知道如何实现此功能?

在MVC中可以有权限的概念,大多数情况下它被认为是身份验证,但不一定是这样

如果您有一个管理员控制器,那么我们假设您知道用户在访问您的站点时是谁。因此,我们可以使用它来确定使用哪个404页面


另一个概念是有管理员“页面”和站点“页面”,因此,如果有人正在查看站点的/admin/部分,将显示管理员404页面,否则将显示正常的404页面。

Zend Framework使用的一个解决方案是模块概念。模块是控制器、模型、视图及其提供特定功能所需的所有组件的分组。我通常会编写主MVC实现,然后为特定于管理员的MVC实现添加模块目录。为了增加代码重用,可以让代码扩展主应用程序代码

有关MVC模块背后策略的更多信息,请参见:

Zend框架遵循一种简单的方法

默认情况下,有一个名为ErrorHandler的前端控制器插件。当从应用程序中的任何位置抛出异常时,ErrorHandler插件将捕获异常

插件将异常转发给相应的ErrorController,该控制器可以实际呈现发生的错误


因此,我猜可以在ErrorController上做出任何决定,您可以考虑引发异常的模块/控制器/操作点。

是的,我很清楚。但是我如何在代码中实现这个特性呢?例如,我有ErrorController;它的404方法应该确定调用了什么控制器,并取决于此信息-显示一个或另一个404页面?或者如何?我们甚至可以将其放入FrontController的preDispatcher中,但据我所知,这不是一个好的做法。我这样回答是因为您的陈述“问题不是关于ZendFramework、CakePHP等,而是关于MVC。”模型可以工作,但正如您所说,如果您有一个ErrorController,它可以处理,不是吗?如果使用用户,请查找用户权限。如果他们是管理员,则显示管理员部分的管理员控制器(如果是这样构建的)。如果您是以节的形式进行操作,如果出错的控制器是x,则显示正常错误控制器,如果是xAdmin,则显示管理错误