Router Zed
Edit on GitHubThe Router is responsible for matching a request to a route and generating URLs based on a route name. The Spryker’s Route module is based on the Symfony’s Routing component; for more information on it, check out the documentation.
Modules
You can find the list of all the modules related to the service below:
- Router -
spryker/router
- RouterExtension -
spryker/router-extension
Installation
For information on the installation, see Upgrade the Router module.
Additionally, you need to add the following plugins to the \Pyz\Zed\EventDispatcher\EventDispatcherDependencyProvider
:
\Spryker\Zed\Router\Communication\Plugin\EventDispatcher\RouterListenerEventDispatcherPlugin
\Spryker\Zed\Router\Communication\Plugin\EventDispatcher\RouterSslRedirectEventDispatcherPlugin
Configure router per environment
The Router can be configured with the following RouterEnvironmentConfigConstantsZed
options:
\Spryker\Zed\Router\RouterConstants::ZED_IS_CACHE_ENABLED
- use this option to enable/disable the cache. By default, it is enabled.\Spryker\Zed\Router\RouterConstants::ZED_CACHE_PATH
- use this if you want to change the path to the generated cache files.\Spryker\Zed\Router\RouterConstants::ZED_IS_SSL_ENABLED
- use this to enable/disable Router’s SSL capabilities.\Spryker\Zed\Router\RouterConstants::ZED_SSL_EXCLUDED_ROUTE_NAMES
- use this to disable SSL for the specific route names when SSL is enabled.
For further information, check out the specifications for the Router.
RouterDependencyProvider
RouterPlugins
Routers are added to the \Pyz\Zed\Router\RouterDependencyProvider::getRouterPlugins()
method. Spryker provides two build-in routers:
\Spryker\Zed\Router\Communication\Plugin\Router\ZedRouterPlugin
- This is the main router which is required for Zed routing.\Spryker\Zed\Router\Communication\Plugin\Router\ZedDevelopmentRouterPlugin
- This router is not required and is only a fallback router for development.
RouterEnhancerPlugins
Additionally, you can add \Spryker\Zed\RouterExtension\Dependency\Plugin\RouterEnhancerPluginInterfaces
to the \Pyz\Zed\Router\RouterDependencyProvider::getRouterEnhancerPlugins()
method.
For detailed information about it have a look into the \Spryker\Zed\RouterExtension\Dependency\Plugin\RouterEnhancerPluginInterface
interface.
Configure router
Additionally, you also have the option to configure the Symfony Router with \Spryker\Zed\Router\RouterConfig::getRouterConfiguration()
.
Check \Symfony\Component\Routing\Router::setOptions()
to see what you can use. Basically, you do not have to change this configuration, but if you need to, you can.
Extending router
The Router can be extended in many ways. To be able to add additional functionality, there is a RouterExtension
module which is installed automatically with the spryker/router
module.
The extension module offers the following interface:
\Spryker\Zed\RouterExtension\Dependency\Plugin\RouterPluginInterface
<?php
namespace Spryker\Zed\RouterExtension\Dependency\Plugin\Router;
use Spryker\Service\Container\ContainerInterface;
use Twig\Environment;
interface RouterPluginInterface
{
/**
* Specification:
* - Returns a RouterInterface which is added to the ChainRouter.
*
* @api
*
* @return \Symfony\Component\Routing\RouterInterface
*/
public function getRouter(): RouterInterface;
}
This plugin can be used to add a project specific Router to the ChainRouter
. The returned router must implement \Symfony\Component\Routing\RouterInterface
.
Use controller from 3rd party
If you want to use 3rd party Controller, e.g. from spryker-eco
and alike you need to add the path where the controller can be found to the \Pyz\Zed\Router\RouterConfig::getControllerDirectories()
method. Paths added to this method will be scanned for controllers. Found controllers will be added to the route cache.
Console commands
The Router module provides the following console commands:
\Spryker\Zed\Router\Communication\Plugin\Console\RouterDebugZedConsole
- This command lists all routes and can be used to see detailed information about each route.\Spryker\Zed\Router\Communication\Plugin\Console\RouterCacheWarmUpConsole
- This command can be used to warm or refresh the generated cache files.
Thank you!
For submitting the form