Zend>捕获无与伦比的正则表达式路由的配置

时间:2011-03-12 10:53:31

标签: php regex zend-framework

我正在为我的应用程序使用zend框架,并且我使用了一些正则表达式路由来根据url中的选项将用户路由到特定的控制器和操作。

但是当url模式不匹配时,我会收到404错误,例如:找不到页面。

如何指定配置,以便当正则表达式路由与指定的URL匹配时,控件会路由到默认控制器并执行操作?

仅供参考,我想默认路由到“索引”控制器和“索引”操作

3 个答案:

答案 0 :(得分:3)

您可以创建自己的“全部捕获”路由并将其放入路由器,以便在正则表达式之后运行。 IIRC,路由器组件循环安装的路由(向后?),第一个返回true的路由器触发进程退出。你的“全部捕获”路线总是会回归真实。

答案 1 :(得分:2)

我正在使用ACL生成自定义错误

class Management_Access extends Zend_Controller_Plugin_Abstract{

    public function preDispatch(Zend_Controller_Request_Abstract $request)
    {
    ....
    ....
    ....
    ....
    $controller = $request->controller;
    $action = $request->action;

    if (!$acl->has($controller)) {

        $request->setControllerName('error');
        $request->setActionName('notfound');

    }

修改它可能会对您有所帮助。

答案 2 :(得分:1)

解决方案1:

在引导程序的Front Controller中添加以下参数。

$front->setParam('useDefaultControllerAlways', true);

解决方案2:

修改你的ErrorController,如下所示,     

class ErrorController extends Zend_Controller_Action {

    public function errorAction() {
        $this->_forward('index', 'index');
    }

}

?>