Zend框架中的正则路由器,如何使这些路由器合并?
-
12-09-2019 - |
题
我需要知道如何将这些路由器合并为一个?我只想拥有一个路由器,而不是这些路由器。我感谢任何答案。:)
$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);
解决方案
因此,您需要一个路线,而不是您现在拥有的四个路线,其中最后三个参数是可选的?尝试此正则态度:
'([a-z]{2})(?:/(\w+)(?:/(\w+)(?:/(\w+))?)?)?'
不隶属于 StackOverflow