代码之家  ›  专栏  ›  技术社区  ›  Morteza Milani

在zend框架下的regex路由器,如何使这些路由器合并?

  •  0
  • Morteza Milani  · 技术社区  · 16 年前

    我需要知道如何将这些路由器合并成一个路由器? 我只想要一个路由器而不是这些。 感谢您的回答。:)

            $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);
    
    1 回复  |  直到 14 年前
        1
  •  2
  •   Alan Moore Chris Ballance    16 年前

    因此,您需要一个路由,其中最后三个参数是可选的,而不是现在的四个路由?试试这个正则表达式:

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