Zf3: похожие контроллеры в каждом модуле - PullRequest
0 голосов
/ 11 июля 2019

У меня есть разные модули в моем приложении ZF2, и каждый модуль содержит список контроллеров. Теперь, когда в zf2 было по-другому создавать маршруты и получать Entity Manager с сервисным локатором. Теперь в Zf3 нам нужно добавить «псевдонимы» и «фабрики», чтобы использовать там любые ресурсы, поскольку при создании маршрутов для каждого модуля невозможно добавить один и тот же псевдоним для контроллера, даже если он находится в разных модулях;

вот мое приложение / module.conf.php

 'controllers' => [
    'factories' => [
        Controller\IndexController::class => ServiceLocatorControllerFactory::class,
        Controller\UserController::class => ServiceLocatorControllerFactory::class,
    ],
    'aliases' =>  [
        'index'     =>  IndexController::class,
        'user'     =>  UserController::class,
    ]
],

и моя панель инструментов / module.config.php

 "controllers" => [
    'factories' => [
        Controller\UserController::class            => ServiceLocatorControllerFactory::class,
        Controller\WidgetController::class          => ServiceLocatorControllerFactory::class,
    ],
    'aliases' =>  [
        "user"          => UserController::class,
        "widget"            => WidgetController::class,
    ]
],

теперь, когда я пытаюсь получить доступ к / application / user / index

идет в Dashboard => UserController => IndexAction

вместо Application => UserController => IndexAction

Решение, которое у меня сейчас есть, состоит в том, чтобы вручную создавать маршруты для каждого контроллера, что очень сложно в моем случае, так как приложение действительно большое и насчитывается 100 контроллеров. Кроме того, это довольно трудоемкая задача - писать каждый маршрут. Есть ли вообще решить вопрос

1 Ответ

0 голосов
/ 13 июля 2019

Поскольку не было найдено ответа для похожих модулей в разных модулях, я создал отдельные маршруты для каждого контроллера в каждом модуле. Это был маршрут, который я написал для

Приложение-> IndexController

        'application-index' => [
            'type'  =>  Segment::class,
            'options' =>  [
                'route' =>  '/application/index[/][:action][/]',
                'defaults'  =>  [
                    '__NAMESPACE__' =>  'Application\Controller',
                    'controller'  =>  IndexController::class,
                    'action'      =>  'index'
                ],
            ]
        ],

и я создал для каждого контроллера, который у меня есть в моем приложении.

...