2011-08-21 4 views
0

다국어 젠드 프로젝트을 개발 중입니다. 에젠드 경로 정규식 문제

  • domain.com/event/2010/ => 년에 이벤트 2010
  • domain.com/event/2010/11/ => 이벤트 :이 같은 구조를 사용 싶어 그래서 이벤트를 만드는 오전 11월 2010
  • domain.com/event/2010/11/23/ = 11 월> 이벤트, 다음과 같은 경로 내가 만든이 pourpuse 2010

23 :

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

첫 번째 작품은 완벽합니다. 두 번째 것은 "action 2010 does not exist"와 같은 오류를 표시합니다. 여기에 무슨 문제가 있습니까 ???

답변

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' 
)); 
+0

답장을 보내 주셔서 감사합니다. 정규식에 문자열이 3 개 이상있는 경우 stablish 수 있는지 알고 싶습니다. [a-z] {3+} –

+0

다음과 같이 작성할 수 있습니다 ([a-z] {3+}). – Zyava