Własny routing z użyciem Zend\Router w Zend Framework 3

Aby dodać własny routing w Zend Framework 3 z użyciem Zend\Router najpierw należy dodać moduł Zend\Router do projektu poprzez zainstalowanie biblioteki zendframework/zend-router za pomocą narzędzia Composer. Następnie należy utworzyć plik konfiguracyjny dla routingu w katalogu module/[nazwa-modułu]/config, np. router.config.php. W pliku konfiguracyjnym można zdefiniować trasy dla routera, takie jak:
				
					use Zend\Router\Http\Literal;
use Zend\Router\Http\Segment;

return [
    'router' => [
        'routes' => [
            'home' => [
                'type' => Literal::class,
                'options' => [
                    'route' => '/',
                    'defaults' => [
                        'controller' => 'Application\Controller\Index',
                        'action' => 'index',
                    ],
                ],
            ],
            'about' => [
                'type' => Segment::class,
                'options' => [
                    'route' => '/about[/:action]',
                    'defaults' => [
                        'controller' => 'Application\Controller\About',
                        'action' => 'index',
                    ],
                ],
            ],
        ],
    ],
];

				
			

W tym przykładzie zdefiniowano dwie trasy. Trasa home odpowiada za adres / i przekierowuje na akcję index kontrolera IndexController z modułu Application. Trasa about odpowiada za adres /about i pozwala na przekierowanie na różne akcje kontrolera AboutController, np. /about/index lub /about/contact.

Następnie należy skonfigurować moduł, aby użył routera Zend\Router. Aby to zrobić, należy dodać poniższy kod do pliku module.config.php:

				
					use Zend\Router\Http\TreeRouteStack;

return [
    'router' => [
        'router_class' => TreeRouteStack::class,
        'routes' => include __DIR__ . '/router.config.php',
    ],
    //...
];