Проблемы с маршрутизацией и время ожидания в Zend Framework 2

0

Я пытаюсь выполнить описанную ниже маршрутизацию, но у меня много проблем (документация похожа на иностранный язык). Должна ли маршрутизация для каждого модуля храниться отдельно в этом файле конфигурации модуля?

  • "маршрут": модуль/контроллер/действие
  • "/": Приложение/индекс/индекс
  • "/: example": Application/Campaign/index (с параметром "campaign" = [пример])
  • "/admin": Admin/Admin/index
  • "/admin/login": Admin/Access/login
  • "/admin/: controller/: action": Admin/[defined]/[defined]

Я попытался понять и использовать приложение скелета для этого, и все работает до маршрута "/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(
                        ),
                    ),
                ),
            ),
        ),
  • 0
    Добавьте URL-адреса, к которым вы пытаетесь обратиться, и какой из них истек. Основываясь на ничем ином, кроме как на внутреннем чувстве, я бы сказал, что время ожидания не зависит от самой маршрутизации. Может быть, какой-то неисправный код в действии контроллеров или что-то совершенно не связанное с настройкой сервера.
  • 0
    Проблема исправлена. Как вы сказали, это не имеет ничего общего с маршрутизатором. Я забыл, что у меня есть print_r($this) в файле 404.phtml, поэтому время памяти истекает.
Теги:
routes
zend-framework2

1 ответ

0

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) Я думаю, что невозможно сделать некоторые рекурсивные циклы, используя только конфигурацию маршрутизации. Поэтому проверьте свой код в контроллерах/службах

Ещё вопросы

Сообщество Overcoder
Наверх
Меню