我是Zend的初学者。我在模块路由配置中看到了may_terminate
。我不明白它的用途。根据{{3}},
the option “may_terminate” hints to the router that no other
segments will follow it.
我仍然没有得到no other segments will follow it
的含义。这里的 it
是什么?有人可以用小例解释吗?
答案 0 :(得分:47)
may_terminate
选项会向路由器指示“此”路由只能与其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