2009-08-09 2 views
0

Мне нужно знать, как объединить эти маршрутизаторы в один? Я хочу иметь только один маршрутизатор вместо этих. Я ценю любой ответ. :)Regex routers в zend framework, как сделать слияние этих маршрутизаторов?

 $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) to ([\ w] *)! sry новичок в RE. –

ответ

2

Таким образом, вместо четырех маршрутов у вас есть сейчас, вы хотите один маршрут, в котором последние три параметра являются необязательными? Попробуйте это регулярное выражение:

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

Спасибо Алан М. Это работает !!!! Огромное спасибо. –

Смежные вопросы