2009-08-09 41 views
0

我需要知道如何將這些路由器合併爲一個? 我想只有一個路由器而不是這些路由器。 我明白任何答案。:)Zend框架中的Regex路由器,如何使這些路由器合併?

 $route = new Zend_Controller_Router_Route_Regex(
     '([a-z]{2})/(\w+)/(\w+)/(\w+)', 
     array('controller'=>'index', 
      'action' => 'index', 
      'module'=>'default', 
      'lang'=>$lang 
     ), 
     array(
      1=>'lang', 
      2=>'module', 
      3=>'controller', 
      4=>'action' 
     ) 
    ); 
    $router->addRoute('default_lang_action', $route); 

    $route = new Zend_Controller_Router_Route_Regex(
     '([a-z]{2})/(\w+)/(\w+)', 
     array('controller'=>'index', 
      'action' => 'index', 
      'module'=>'login', 
      'lang'=>$lang 
     ), 
     array(
      1=>'lang', 
      2=>'module', 
      3=>'controller' 
      ) 
    ); 
    $router->addRoute('default_lang_con', $route); 

    $route = new Zend_Controller_Router_Route_Regex(
     '([a-z]{2})/(\w+)', 
     array('controller'=>'index', 
      'action' => 'index', 
      'module'=>'default', 
      'lang'=>$lang 
     ), 
     array(
      1=>'lang', 
      2=>'module' 
     ) 
    ); 
    $router->addRoute('default_lang_mod', $route); 

    $route = new Zend_Controller_Router_Route_Regex(
     '([a-z]{2})', 
     array('controller'=>'index', 
      'action' => 'index', 
      'module'=>'default', 
      'lang'=>$lang 
     ), 
     array(
      1=>'lang' 
     ) 
    ); 
      $router->addRoute('default_lang', $route); 
+0

將(。* \ w)更改爲([\ w] *)! sry是新來的RE。 – 2009-08-09 18:39:28

回答

2

所以不是你現在有四條航線,想要一個路線中的最後三個參數是可選的?試試這個正則表達式:

'([a-z]{2})(?:/(\w+)(?:/(\w+)(?:/(\w+))?)?)?' 
+0

謝謝Alan M. It works !!!!非常感謝。 – 2009-08-11 06:30:40