2011-05-09 55 views
0

hello我在Zend工作。我想知道一些關於未定義URL處理的事情。我有一個網址,如http://localhost/concierge/login,它在url規則文件中有以下規則。zend undefined URL處理

'admin/login' =>array('login', array('module'=>'admin','controller' => 'index','action' => 'login'),array(),'login'),。它一切正常。

但是,如果更改像我還沒有定義的http://localhost/concierge/lgin這樣的網址,它將進入一個空白頁面,其中顯示一個空數組,並且有寫入Page not Found。 IT看起來不好。我想知道用戶是否在URL中寫入任何錯誤,我的應用程序應顯示404 error

現在我想知道我該如何實現我的任務?我需要爲URL規則文件定義其他規則來處理所有這些錯誤嗎?如果是這樣的網址規則將如何?對於控制器,我應該怎麼做?任何幫助?

+2

檢查http://framework.zend.com/manual/en/zend.controller.plugins.html,在該頁面上搜索「404」(沒有可用的直接鏈接)。基本上你可以放入錯誤處理程序插件來處理404s – JohnP 2011-05-09 05:36:31

+0

直接鏈接 - http://framework.zend.com/manual/en/zend.controller.plugins.html#zend.controller.plugins.standard.errorhandler.fourohfour – Phil 2011-05-09 11:42:10

回答

1

我使用前端控制器插件的preDispatch鉤子來做到這一點。公共函數preDispatch(Zend_Controller_Request_Abstract $請求){ $ disp = Zend_Controller_Front :: getInstance() - > getDispatcher();

if (!$disp->isDispatchable($request)) { 
      $request->setModuleName('default'); 
      $request->setControllerName('error'); 
      $request->setActionName('error404'); 
    } 

}

如果事情不存在(/ registerxxx而不是/註冊 例如),那麼它們會反彈到404頁。它爲我工作至今。