Php 基于路由约束的ZF2多控制器路由
我正在重构一个项目中的一些路由,并试图保留以下的当前路径结构Php 基于路由约束的ZF2多控制器路由,php,routing,zend-framework2,Php,Routing,Zend Framework2,我正在重构一个项目中的一些路由,并试图保留以下的当前路径结构 /事件该配置中有两个问题 第一:匹配规则。 由于匹配不完全基于正则表达式,因此今年正确的“模式”是'2012 | 2013 | 2014' 第二:匹配顺序。 根据: 最后一条路线将首先匹配。由于2012与\d{4}匹配,您必须首先测试这些“异常” 只需在超级碗标准后放置superbowl存档路径,它就可以工作了 “路由器”=>[ “路线”=>[ “事件”=>[ 'type'=>'literal', “选项”=>[ “路由”=>“/e
/事件该配置中有两个问题 第一:匹配规则。 由于匹配不完全基于正则表达式,因此今年正确的“模式”是
'2012 | 2013 | 2014'
第二:匹配顺序。
根据:
最后一条路线将首先匹配。由于2012与\d{4}
匹配,您必须首先测试这些“异常”
只需在超级碗标准后放置superbowl存档
路径,它就可以工作了
“路由器”=>[
“路线”=>[
“事件”=>[
'type'=>'literal',
“选项”=>[
“路由”=>“/events”,
“默认设置”=>[
“控制器”=>“事件”,
'操作'=>'索引'
]
],
“may_terminate”=>true,
“子路由”=>[
“超级碗”=>[
'类型'=>'段',
“选项”=>[
“路线”=>“/超级碗”,
“默认设置”=>[
“动作”=>“超级碗”
]
]
],
“超级碗标准”=>[
'类型'=>'段',
“选项”=>[
“路线”=>“/[:年]-超级碗”,
'约束'=>[
'年份'=>'\d{4}'
],
“默认设置”=>[
“控制器”=>“超级碗标准”,
'操作'=>'索引'
]
]
],
“超级碗档案”=>[
'类型'=>'段',
“选项”=>[
“路线”=>“/[:年]-超级碗[/:detail],
'约束'=>[
“年份”=>“2012 | 2013 | 2014”
],
“默认设置”=>[
“控制器”=>“超级碗档案”,
'操作'=>'索引'
]
]
]
]
]
]
],
'router' => [
'routes' => [
'events' => [
'type' => 'literal',
'options' => [
'route' => '/events',
'defaults' => [
'controller' => 'events',
'action' => 'index',
],
],
'may_terminate' => true,
'child_routes' => [
'super-bowl' => [
'type' => 'segment',
'options' => [
'route' => '/super-bowl',
'defaults' => [
'action' => 'superBowl',
],
],
],
'super-bowl-archives' => [
'type' => 'segment',
'options' => [
'route' => '/[:year]-super-bowl[/:detail]',
'constraints' => [
'year' => '^(2012|2013|2014)',
],
'defaults' => [
'controller' => 'super-bowl-archives',
'action' => 'index',
],
],
],
'super-bowl-standard' => [
'type' => 'segment',
'options' => [
'route' => '/[:year]-super-bowl',
'constraints' => [
'year' => '\d{4}'
],
'defaults' => [
'controller' => 'super-bowl-standard',
'action' => 'index',
],
],
],
],
],
],
],
Routes will be queried in a LIFO order, and hence the reason behind the name RouteStack