2011-05-09 51 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页。它为我工作至今。