Zend Framework 3 маршрутизация для всех контроллеров - PullRequest
0 голосов
/ 28 мая 2018

Я хочу решить следующую проблему в Zend Framework 3:

Маршрутизация для всех контроллеров и действий в module.config.php без записи какого-либо контроллера в файле module.config.php.

Пример: я не хочу писать ContactController здесь:

return [
'router' => [
    'routes' => [
        'home' => [
            'type'    => Segment::class,
            'options' => [
                'route'    => '/',
                'defaults' => [
                    'controller' => Controller\IndexController::class,
                    'action'     => 'index',
                ],
            ],
        ],
        'app' => [
            'type'    => Segment::class,
            'options' => [
                'route'    => '/app[/:action][/]',
                'defaults' => [
                    'controller' => Controller\IndexController::class,
                    'action'     => 'index',
                ],
            ],
        ],
        'contact' => [
            'type'    => Segment::class,
            'options' => [
                'route'    => '/contact[/:action][/]',
                'defaults' => [
                    'controller' => Controller\ContactController::class,
                    'action'     => 'index',
                ],
            ],
        ],
    ],
],

];

Ответы [ 2 ]

0 голосов
/ 28 августа 2018

вы должны установить module.config следующим образом

return [
    'router' => [
        'routes' => [
            'home' => [
                'type' => Literal::class,
                'options' => [
                    'route'    => '/',
                    'defaults' => [
                        'controller' => Controller\IndexController::class,
                        'action'     => 'index',
                    ],
                ],
            ],
            'application' => [
                'type'    => Segment::class,
                'options' => [
                    'route'    => '/application/[:controller[/:action]]',
                    'constraints' => array(
                        'controller' => '[a-zA-Z][a-zA-Z0-9_-]*',
                        'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
                    ),
                    'defaults' => [
                        '__NAMESPACE__' => 'Application\Controller', //这个好像是必须的
                        'controller' => Controller\IndexController::class,
                        'action'     => 'index',
                    ],
                ],
            ],
        ],
    ],
    'controllers' => [
        'factories' => [
            Controller\IndexController::class => InvokableFactory::class,
        ],
        'invokables' => [
            'Application\Controller\Index' => 'Application\Controller\IndexController',
        ],
    ],

]

0 голосов
/ 30 мая 2018

Цель маршрутизатора - сопоставить URL-адрес запроса с маршрутом и отправить запрос определенному контроллеру и действию.Вы должны определить контроллер для каждого маршрута, в противном случае, что будет делать MVC, когда он сопоставит URL с маршрутом?

...