Подтвердить что ты не робот

Что такое "may_terminate" в zend framework 2?

Я начинаю работать с 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? Может ли кто-нибудь объяснить это небольшим примером?

4b9b3361

Ответ 1

Параметр 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

  • дома
  • главная /Foo

may_terminate = false

  • главная /Foo