Я пытаюсь выполнить описанную ниже маршрутизацию, но у меня много проблем (документация похожа на иностранный язык). Должна ли маршрутизация для каждого модуля храниться отдельно в этом файле конфигурации модуля?
Я попытался понять и использовать приложение скелета для этого, и все работает до маршрута "/admin/controller/action", где время ожидания скрипта (я предполагаю, что там где-то есть рекурсивный цикл). Мое определение маршрута:
'home' => array(
'type' => 'literal',
'options' => array(
'route' => '/',
'defaults' => array(
'controller' => 'Application\Controller\Index',
'action' => 'index',
),
),
),
'campaign' => array(
'type' => 'segment',
'options' => array(
'route' => '[/:campaign]',
'constraints' => array(
'campaign' => '[a-zA-Z][a-zA-Z0-9_-]*',
),
'defaults' => array(
'controller' => 'Application\Controller\Campaign',
'action' => 'index',
'campaign' => ''
),
),
),
'admin' => array(
'type' => 'segment',
'options' => array(
'route' => '/admin',
'defaults' => array(
'controller' => 'Admin\Controller\Admin',
'action' => 'index',
),
),
'may_terminate' => true,
'child_routes' => array(
'default' => array(
'type' => 'segment',
'options' => array(
'route' => '/[:controller[/:action]]',
'constraints' => array(
'controller' => '[a-zA-Z][a-zA-Z0-9_-]*',
'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
),
'defaults' => array(
),
),
),
),
),
1) Да, вы должны разделить конфигурацию маршрутизации на модули, ZF2 будет автоматически ее объединять. Поэтому вам нужно сохранить home
и маршруты campaign
в Application/config/module.config.php
и маршруте admin
в Admin/config/module.config.php
2) Я не вижу глобальных ошибок в вашем конфиге. Две мелочи:
2.1) Вы можете использовать literal
вместо segment
для родительского маршрута admin
2.2) Если вы хотите использовать :controller
как параметр маршрута, обязательно создайте ярлык для него через секцию invokables
config. Например:
'controllers' => array(
'invokables' => array(
'index' => 'Application\Controller\Index'
'admin' => 'Admin\Controller\Admin'
),
),
Теперь, например, url /admin/admin/update
связан с Admin\Controller\Admin->updateAction()
3) Я думаю, что невозможно сделать некоторые рекурсивные циклы, используя только конфигурацию маршрутизации. Поэтому проверьте свой код в контроллерах/службах
print_r($this)
в файле 404.phtml, поэтому время памяти истекает.