0

我正在开发一个多语言 Zend 项目。我正在创建事件,所以我想使用这样的结构:

  • domain.com/event/2010/ => 2010 年的事件
  • domain.com/event/2010/11/ => 2010 年 11 月的活动
  • domain.com/event/2010/11/23/ => 2010 年 11 月 23 日的活动

对于这个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 不存在”。这里有什么问题???

4

1 回答 1

1

您不能:language在 Zend_Controller_Router_Route_Regex 中使用变量(在您的情况下)。你应该用下一种方式重写你的正则表达式:

$router->addRoute('eventLang', new Zend_Controller_Router_Route_Regex('[^/]+/event/(\d+)(/(\d+)(/(\d+))?)?', array(
    'module' => 'public',
    'controller' => 'event',
    'action' => 'show'
), array(
    1 => 'language'
));
于 2011-08-21T16:53:57.350 回答