Ответ 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