2010-08-24 72 views

回答

2

Zend框架遵循一个简单的方法。

默认情况下有一个名为ErrorHandler的Front Controller插件。当应用程序中的任何地方抛出异常时,ErrorHandler插件会捕获异常。

该插件将异常转发给相应的ErrorController,该错误控制器实际上可能会导致发生错误。

所以我猜测可能在你的ErrorController做,你可以考虑到模块/控制器/动作点的异常被抛出的任何决定。

1

在MVC中可以有一个权限的概念,大多数情况下它被认为是身份验证,但事实并非如此。

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

的另一个概念是有管理“页面”和网站“页”因此,如果有人正在查看该网站的你/管理/节,管理员404页显示出来,否则正常的404页显示。

+0

是的,这对我来说很清楚。但是我怎样才能在代码中实现这个功能?例如,我有ErrorController;它的404方法应该确定控制器被调用,并根据这些信息 - 显示一个或另一个404页面?或者如何?我们甚至可以把这个变成FrontController的preDispatcher,但它不是好的做法,据我所看到的。 – Kirzilla 2010-08-24 20:32:44

+0

我回答,那是因为你的说法“问题不在于ZendFramework,CakePHP的等 - 这是关于MVC”。模型可以工作,但正如你所说,如果你有一个ErrorController,它可以处理它不能吗?如果您使用用户,则查找用户权限。如果他们是管理员显示管理员部分的管理员控制器(如果它是这样构建的)。如果你正在做它的部分,如果出错的控制器是X,则显示正常的差错控制,如果它是xAdmin然后显示管理员错误 – 2010-08-24 20:42:32

1

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

背后MVC模块的策略的详细信息可以在这里找到: http://framework.zend.com/manual/en/zend.controller.modular.html

相关问题