Zend framework2 ZF2-尝试创建类似ZF1的路由
实际上,我的ZF2应用程序中有两个模块(应用程序和管理),我想要一个类似ZF1的url路由。我目前有以下路线:Zend framework2 ZF2-尝试创建类似ZF1的路由,zend-framework2,zend-framework-routing,Zend Framework2,Zend Framework Routing,实际上,我的ZF2应用程序中有两个模块(应用程序和管理),我想要一个类似ZF1的url路由。我目前有以下路线: “路由器”=>阵列 ( “路由”=>数组 ( “admin”=>数组 ( '类型'=>'段', “选项”=>数组 ( “路由”=>“管理员/[:控制器[/:操作]]”, '约束'=>数组 ( “控制器”=>“[a-zA-Z][a-zA-Z0-9_-]*”, “行动”=>“[a-zA-Z][a-zA-Z0-9_u-]*”, ), “默认值”=>数组 ( “\uuuu名称空间”=>“管理员
“路由器”=>阵列
(
“路由”=>数组
(
“admin”=>数组
(
'类型'=>'段',
“选项”=>数组
(
“路由”=>“管理员/[:控制器[/:操作]]”,
'约束'=>数组
(
“控制器”=>“[a-zA-Z][a-zA-Z0-9_-]*”,
“行动”=>“[a-zA-Z][a-zA-Z0-9_u-]*”,
),
“默认值”=>数组
(
“\uuuu名称空间”=>“管理员\控制器”,
“控制器”=>“索引”,
“操作”=>“索引”,
),
),
“may_terminate”=>true,
“子路由”=>数组
(
“通配符”=>数组
(
'类型'=>'通配符'
)
)
),
),
),
因此它将匹配“/admin”、“/admin/controller”、“/admin/controller/action”,但不匹配“/controller/action”
现在我需要一条到应用程序模块的路径。问题是,如果我只是在模块应用程序中使用类似的路由,那么这个新路由将匹配“/admin/controller”作为controller=“admin”和action=“controller”
我还在应用程序中尝试了以下正则表达式路径:
“应用程序”=>数组
(
'type'=>'Regex',
“选项”=>数组
(
“regex'=>'/(?^(?)(管理)$)[a-zA-Z][a-zA-Z0-9_-]*)?”。
“(/[a-zA-Z][a-zA-Z0-9_-]*)?”,
“规范”=>“/%controller%/%action%”,
/*'约束'=>数组
(
//控制器不能是“管理员”
“控制器”=>“^(?(管理员)$)[a-zA-Z][a-zA-Z0-9_-]*”,
“行动”=>“[a-zA-Z][a-zA-Z0-9_u-]*”,
),*/
“默认值”=>数组
(
“\uuuu名称空间”=>“应用程序\控制器”,
“控制器”=>“索引”,
“操作”=>“索引”,
),
),
“may_terminate”=>true,
“子路由”=>数组
(
“通配符”=>数组
(
'类型'=>'通配符'
)
)
),
但它没有得到变量“控制器”和“动作”
有人对如何解决这个问题有什么建议吗?请注意路由顺序:路由是使用后进先出堆栈处理的,因此在匹配请求URL时,数组中最后一个出现的内容首先出现 这意味着您必须首先定义最通用的路由,以防止它们匹配相似但更具体的路由 使用以下顺序不需要对
控制器参数进行任何约束,因为以/admin
开头的任何内容都将首先匹配
'route1' => array(
'type' => 'Segment',
'options' => array(
'route' => '/[:controller[/:action]]',
'defaults' => array (
'controller' => 'controller',
'action' => 'index',
),
),
),
'route2' => array(
'type' => 'Segment',
'options' => array(
'route' => '/admin[/:controller[/:action]]',
'defaults' => array (
'controller' => 'admin-controller',
'action' => 'index',
),
),
),
此外,您始终可以使用priority
属性(不应在options
数组下定义,而应在路由的最顶端数组中定义)指定不符合条件的路由优先级,因此以下代码相当于上一个示例:
'route2' => array(
'type' => 'Segment',
'options' => array(
'route' => '/admin[/:controller[/:action]]',
'defaults' => array (
'controller' => 'admin-controller',
'action' => 'index',
),
),
),
'route1' => array(
'type' => 'Segment',
'options' => array(
'route' => '/[:controller[/:action]]',
'defaults' => array (
'controller' => 'controller',
'action' => 'index',
),
),
'priority' => -1,
),