我正在开发一个多语言Zend项目。我正在创建事件,所以我想使用这样的结构:
对于这个pourpuse,我创建了以下路线:
$router->addRoute('event', new Zend_Controller_Router_Route_Regex('event/(\d+)(/(\d+)(/(\d+))?)?', array(
'module' => 'public',
'controller' => 'event',
'action' => 'show'
)));
$router->addRoute('eventLang', new Zend_Controller_Router_Route_Regex(':language/event/(\d+)(/(\d+)(/(\d+))?)?', array(
'language'=>'en'
'module' => 'public',
'controller' => 'event',
'action' => 'show'
)));
第一个完美无缺。第二个显示错误,如“动作2010不存在”。这有什么问题???
答案 0 :(得分:1)
您不能在Zend_Controller_Router_Route_Regex中使用变量(在您的情况下为:language
)。您应该以下一种方式重写您的正则表达式:
$router->addRoute('eventLang', new Zend_Controller_Router_Route_Regex('[^/]+/event/(\d+)(/(\d+)(/(\d+))?)?', array(
'module' => 'public',
'controller' => 'event',
'action' => 'show'
), array(
1 => 'language'
));