什么是zend框架2中的“may_terminate”?

我是与Zend合作的初学者。我在模块路由配置中看到了。我不明白这是干什么用的。根据 ZF2 官方文档may_terminate

the option “may_terminate” hints to the router that no other 
segments will follow it.

我仍然不明白.是什么?任何人都可以用小例子来解释一下吗?no other segments will follow it


答案 1

该选项将向路由器指示“此”路由能够仅在其值上匹配;即使它定义了 .may_terminateroutechild_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

这是使用该选项的位置。如果我们在浏览器中浏览到,则当路由发生时,路由器不能将路由视为可匹配的路由。在 ZF2 术语中,路由器不能在此路由上“终止”,并继续搜索 到 的匹配项,这将失败并引发 404 错误。may_terminate/homehomemay_terminate = falsechild_routes

因此,通过修改上面示例中选项的值,我们可以更改可以匹配的路由。may_terminate

may_terminate = true

  • 首页/foo

may_terminate = false

  • 首页/foo

答案 2

推荐