Zend Route Regex和无效的控制器

时间:2012-01-28 20:25:30

标签: zend-framework routing

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);


            }


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

2 个答案:

答案 0 :(得分:0)

您尝试删除默认路线:

  

//摘自ZF参考 24.5.4。默认路由 ...如果您这样做   您可以在路由架构中不希望使用此特定的默认路由   通过创建自己的“默认”路线(即存储它)来覆盖它   在'default'的名义下)或通过使用完全删除它   removeDefaultRoutes():

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

答案 1 :(得分:0)

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

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

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