2010-08-24 75 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

相關問題