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',
],
//...
];