我很新MVC,現在我正在閱讀關於CakePHP,ZendFramework等管理員控制器的一個404頁面和其他控制器的其他404頁面如何?
我不明白如何設置一個404頁面丟失管理控制器方法和其他404頁面的所有其他控制器方法。
問題不是ZendFramework,CakePHP的等 - 這是關於MVC。 我正在寫我自己的MVC,我不知道如何實現此功能?
我很新MVC,現在我正在閱讀關於CakePHP,ZendFramework等管理員控制器的一個404頁面和其他控制器的其他404頁面如何?
我不明白如何設置一個404頁面丟失管理控制器方法和其他404頁面的所有其他控制器方法。
問題不是ZendFramework,CakePHP的等 - 這是關於MVC。 我正在寫我自己的MVC,我不知道如何實現此功能?
Zend框架遵循一個簡單的方法。
默認情況下有一個名爲ErrorHandler的Front Controller插件。當應用程序中的任何地方拋出異常時,ErrorHandler插件會捕獲異常。
該插件將異常轉發給相應的ErrorController,該錯誤控制器實際上可能會導致發生錯誤。
所以我猜測可能在你的ErrorController做,你可以考慮到模塊/控制器/動作點的異常被拋出的任何決定。
在MVC中可以有一個權限的概念,大多數情況下它被認爲是身份驗證,但事實並非如此。
如果您有一個管理員控制器,那麼我們假設您知道用戶在訪問您的網站時是誰。因此我們可以使用它來確定要使用哪個404頁面。
的另一個概念是有管理「頁面」和網站「頁」因此,如果有人正在查看該網站的你/管理/節,管理員404頁顯示出來,否則正常的404頁顯示。
Zend Framework使用的一個解決方案是模塊的概念。模塊是控制器,模型,視圖以及提供特定功能所需的所有組件的分組。我通常會編寫主要的MVC實現,然後爲我的特定於管理員的MVC實現添加一個模塊目錄。爲了增加代碼重用,可以讓代碼擴展主應用程序代碼。
背後MVC模塊的策略的詳細信息可以在這裏找到: http://framework.zend.com/manual/en/zend.controller.modular.html
是的,這對我來說很清楚。但是我怎樣才能在代碼中實現這個功能?例如,我有ErrorController;它的404方法應該確定控制器被調用,並根據這些信息 - 顯示一個或另一個404頁面?或者如何?我們甚至可以把這個變成FrontController的preDispatcher,但它不是好的做法,據我所看到的。 – Kirzilla 2010-08-24 20:32:44
我回答,那是因爲你的說法「問題不在於ZendFramework,CakePHP的等 - 這是關於MVC」。模型可以工作,但正如你所說,如果你有一個ErrorController,它可以處理它不能嗎?如果您使用用戶,則查找用戶權限。如果他們是管理員顯示管理員部分的管理員控制器(如果它是這樣構建的)。如果你正在做它的部分,如果出錯的控制器是X,則顯示正常的差錯控制,如果它是xAdmin然後顯示管理員錯誤 – 2010-08-24 20:42:32