Php Zend_控制器_路由器_重写,以及多页部分的routes.ini

Php Zend_控制器_路由器_重写,以及多页部分的routes.ini,php,regex,zend-framework,url-rewriting,Php,Regex,Zend Framework,Url Rewriting,我有一个ZF应用程序,它使用自定义路由到一个页面列表,比如一个位置列表,但我在理解路由请求值的工作方式或使其工作的正则表达式方面遇到了问题。我想去看电影,然后看下面的节目http://domain.com/locations/2 ->等等 问题是识别空的箱子 在my routes.ini中,我有一个不起作用但/^[\d]*$/在简单的预匹配中起作用的: routes.locations-page.route = locations/:page routes.locations-page.defa

我有一个ZF应用程序,它使用自定义路由到一个页面列表,比如一个位置列表,但我在理解路由请求值的工作方式或使其工作的正则表达式方面遇到了问题。我想去看电影,然后看下面的节目http://domain.com/locations/2 ->等等

问题是识别空的箱子

在my routes.ini中,我有一个不起作用但/^[\d]*$/在简单的预匹配中起作用的:

routes.locations-page.route = locations/:page
routes.locations-page.defaults.controller = locations 
routes.locations-page.defaults.action = list-new
;routes.locations-page.reqs.page = \d* - does not work
routes.locations-page.reqs.page = ^[\d]*$
什么样的reqex可以捕捉到单一路线中的场景


thx

由于URL结构不同,因此无法在同一规则中匹配URL和。但是你可以尝试以下方法来实现你想要做的事情

在引导文件中

    $r = new Zend_Controller_Router_Route_Regex('locations/(*)',
                    array('controller' => 'locations', 'action' => 'list-new'), 
array(1 => 'locationID'));
    $router->addRoute('add-location', $r);
您还可以使用首选的添加路线的方式

在您的位置控制器中

$locationID = $this->_getParam('locationID');

现在,基于此值,转发到相应的操作。

由于URL结构不同,无法在同一规则中匹配URL和。但是你可以尝试以下方法来实现你想要做的事情

在引导文件中

    $r = new Zend_Controller_Router_Route_Regex('locations/(*)',
                    array('controller' => 'locations', 'action' => 'list-new'), 
array(1 => 'locationID'));
    $router->addRoute('add-location', $r);
您还可以使用首选的添加路线的方式

在您的位置控制器中

$locationID = $this->_getParam('locationID');

现在,根据该值,向前推进适当的操作。

hmm。。。与我的情况非常相似,但正则表达式对我不起作用。你会被困在最初的情况下,你需要一个0在结束。我正在做一个丑陋的mod_重写位置->位置重定向/0@timpone是位置/*不匹配位置/?嗯。。。与我的情况非常相似,但正则表达式对我不起作用。你会被困在最初的情况下,你需要一个0在结束。我正在做一个丑陋的mod_重写位置->位置重定向/0@timpone位置/*与位置/*不匹配吗?