什么是zend框架2中的'may_terminate'?

Gee*_*eek 24 php zend-route zend-router zend-framework2

我是Zend的初学者.我may_terminate在模块路由配置中看到过.我不明白它的用途.根据ZF2官方文档,

the option “may_terminate” hints to the router that no other 
segments will follow it.
Run Code Online (Sandbox Code Playgroud)

我仍然没有得到的含义no other segments will follow it.这是什么it?有人可以用小例解释吗?

Ale*_*exP 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',
                    ],
                ],
            ],
        ],
    ],
],
Run Code Online (Sandbox Code Playgroud)

上述配置存在一些歧义,仅在定义子节点的路由中出现.我们是否希望允许我们的用户匹配两条路线或仅一条路线?

我们可以只允许匹配/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

  • 家用/富