我是 Zend 的初学者。may_terminate
我在模块路由配置中见过。我不明白它是为了什么。根据ZF2 官方文档,
the option “may_terminate” hints to the router that no other
segments will follow it.
我还是不明白 的意思no other segments will follow it
。这是什么it
?谁能用小例子解释一下?
我是 Zend 的初学者。may_terminate
我在模块路由配置中见过。我不明白它是为了什么。根据ZF2 官方文档,
the option “may_terminate” hints to the router that no other
segments will follow it.
我还是不明白 的意思no other segments will follow it
。这是什么it
?谁能用小例子解释一下?
该may_terminate
选项将向路由器指示“this”路由能够仅根据其route
;的值进行匹配。即使它定义了child_routes
.
考虑以下示例路由配置。
'router' => [
'routes' => [
'home' => [
'type' => 'literal',
'options' => [
'route' => '/home',
],
'may_terminate' => false,
'child_routes' => [
'foo' => [
'type' => 'literal',
'options' => [
'route' => '/foo',
],
],
],
],
],
],
上面的配置有一些歧义,只发生在定义子路由的情况下。我们是想让我们的用户在两条路线上匹配还是只在一条路线上匹配?
我们可以只允许匹配/home
部分;这意味着我们有两条路线
/home
,/home/foo
或者我们可能只想允许/home/foo
。
这是may_terminate
使用该选项的地方。如果我们/home
在浏览器中浏览到,当路由发生时,路由器无法将home
路由视为可匹配路由may_terminate = false
。在 ZF2 术语中,路由器无法“终止”此路由并继续搜索匹配到 的child_routes
,这将失败并引发 404 错误。
所以通过修改may_terminate
上面例子中选项的值,我们可以改变可以匹配的路由。
may_terminate = true
may_terminate = false