Zend route regex problem - PullRequest
       8

Zend route regex problem

0 голосов
/ 21 августа 2011

Я разрабатываю мультиязычный проект Zend . Я создаю события, поэтому хочу использовать такую ​​структуру:

  • domain.com / event / 2010 / => События 2010 года
  • domain.com / event / 2010/11 / => События ноября 2010
  • domain.com / event / 2010/11/23 / => События 23 ноября 2010 года

Для этой заливки я создал следующие маршруты:

$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 не существует». В чем здесь проблема ???

1 Ответ

1 голос
/ 21 августа 2011

Вы не можете использовать переменные (: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'
));
...