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

Kolejnym sposobem na dodanie routingu w Zend Framework 3 jest użycie komponentu Zend\Mvc\Router. Ten komponent jest już domyślnie zainstalowany w aplikacji Zend Framework 3.

Oto przykładowy sposób utworzenia własnego routingu z użyciem Zend\Mvc\Router w Zend Framework 3:

  1. Dodaj moduł routingu do pliku konfiguracyjnego aplikacji, który znajduje się w katalogu config/application.config.php:
				
					'modules' => [
    'Zend\Router',
    'Application',
],

				
			
  1. Utwórz plik konfiguracyjny dla routingu i zapisz go w katalogu module/Application/config/module.config.php:
				
					use Zend\Mvc\Router\Http\Literal;
use Zend\Mvc\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',
                    ],
                ],
            ],
        ],
    ],
];

				
			
  1. Stwórz kontroler AboutController z akcją indexAction i ewentualnie innymi akcjami, który będzie odpowiadał za wyświetlanie informacji o stronie „O nas”:
				
					namespace Application\Controller;

use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;

class AboutController extends AbstractActionController
{
    public function indexAction()
    {
        return new ViewModel([
            'pageTitle' => 'O nas',
            'pageContent' => 'Jesteśmy zespołem pasjonatów...',
        ]);
    }

    public function teamAction()
    {
        return new ViewModel([
            'pageTitle' => 'Nasz zespół',
            'pageContent' => 'Oto nasi pracownicy...',
        ]);
    }
}

				
			
  1. Przejdź na stronę główną aplikacji, aby zobaczyć, jak działa routing:
				
					http://localhost/

				
			

Powinna zostać wyświetlona strona główna aplikacji.

  1. Przejdź na stronę „O nas”, aby sprawdzić, czy routing działa poprawnie:
				
					http://localhost/about

				
			

Powinna zostać wyświetlona strona „O nas” z tytułem „O nas” i treścią „Jesteśmy zespołem pasjonatów…”.

  1. Spróbuj przejść na inną stronę „O nas”, aby sprawdzić, czy routing działa dla innej akcji w kontrolerze:
				
					http://localhost/about/team

				
			

Powinna zostać wyświetlona strona „Nasz zespół” z tytułem „Nasz zespół” i treścią „Oto nasi pracownicy…”.