Zend路由Regex和无效控制器



php我有添加路由的方法:


    public function addRoutes()
            {
                $front = Zend_Controller_Front::getInstance();
                $redirect = $front->getRouter();
                $router = new Zend_Controller_Router_Route_Regex( 
                                                          "p/(a-zA-Z0-9).htm",
                                                         array(
                                                         'controller'=>'page',
                                                         'action'=>'index',
                                                          1=>'ja.htm'
                                                          ),
                                                         array( 1 => 'page_name')
                        );
                $route2 = new Zend_Controller_Router_Route_Regex("(a-zA-Z0-9).html",
                        array('controller'=>'page',
                            'action'=>'index',
                            1=>'ja.html'),
                        array(1=>'page_name'));
                $redirect->addRoute('pages',$router);
                $redirect->addRoute('hmtmled',$route2);
               $front->setRouter($redirect);

            }

我试图输入类似于p/ja.htm的url,但我得到错误:指定的控制器无效(p)。我知道这是默认路线的原因,但如何改变呢?

该方法是Bootstrap类的一部分吗?如果是,你确定它正在运行吗?请记住,自动调用的Bootstrap方法是形式为_initXXX()的方法(注意前导下划线)。

此外,正如@Tim Fountain在评论中敏锐地指出的那样,正则表达式需要是:

p/([0-9A-Za-z]+).htm

您尝试删除默认路由:

//摘录自ZF参考资料24.5.4。默认路线。。。如果你这样做不希望在路由架构中使用此特定的默认路由,您可以通过创建自己的"默认"路由来覆盖它(即存储它以"default"的名称)或通过使用removeDefaultRoutes():

// Remove any default routes
$router->removeDefaultRoutes();

最新更新