2009-08-09 8 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] *)! REは新しいです。 –

答えて

2

代わりに、あなたが今持っている4つのルートのだから、あなたは最後の三つのパラメータはオプションである、つのルートをしたいですか?この正規表現を試してください:

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

アランMさんありがとうございました!どうもありがとうございます。 –

関連する問題