Following this tutorial assumes that you already completed the installation and configuration steps.
Get an instance of the Dot\Router\RouteCollector using the below code:
/** @var \Dot\Router\RouteCollectorInterface $routeCollector */
$routeCollector = $container->get(\Dot\Router\RouteCollectorInterface::class);
Create a route group, by setting the route group prefix and optionally a(n array of) common middleware(s):
$routeCollector->group('/resource', SomeMiddleware::class);
group method arguments:
$routeCollector->group('/resource', [SomeMiddleware::class, OtherMiddleware::class])
->route('/manage', ResourceHandler::class, 'route-name', ['GET', 'POST']);
If this route does not need to be piped through specific middleware(s), you can specify the fifth argument $excludeMiddleware exclude those middlewares at route level (makes sense when there are multiple routes in a group):
$routeCollector->group('/resource', [SomeMiddleware::class, OtherMiddleware::class])
->route('/manage', ResourceHandler::class, 'route-name', ['GET', 'POST'], excludeMiddleware: SomeMiddleware::class);
route() method arguments:
any())$routeCollector->group('/resource', [SomeMiddleware::class, OtherMiddleware::class])
->any('/manage', ResourceHandler::class, 'route-name');
If this route does not need to be piped through specific middleware(s), you can specify the fourth argument $excludeMiddleware exclude those middlewares at route level (makes sense when there are multiple routes in a group):
$routeCollector->group('/resource', [SomeMiddleware::class, OtherMiddleware::class])
->any('/manage', ResourceHandler::class, 'route-name', excludeMiddleware: SomeMiddleware::class);
any() method arguments:
$routeCollector->group('/resource', [SomeMiddleware::class, OtherMiddleware::class])
->delete('/{id}', ResourceHandler::class, 'route-name');
If this route does not need to be piped through specific middleware(s), you can specify the fourth argument $excludeMiddleware exclude those middlewares at route level (makes sense when there are multiple routes in a group):
$routeCollector->group('/resource', [SomeMiddleware::class, OtherMiddleware::class])
->delete('/{id}', ResourceHandler::class, 'route-name', excludeMiddleware: SomeMiddleware::class);
delete() method arguments:
$routeCollector->group('/resource', [SomeMiddleware::class, OtherMiddleware::class])
->get('/{id}', ResourceHandler::class, 'route-name');
If this route does not need to be piped through specific middleware(s), you can specify the fourth argument $excludeMiddleware exclude those middlewares at route level (makes sense when there are multiple routes in a group):
$routeCollector->group('/resource', [SomeMiddleware::class, OtherMiddleware::class])
->get('/{id}', ResourceHandler::class, 'route-name', excludeMiddleware: SomeMiddleware::class);
get() method arguments:
$routeCollector->group('/resource', [SomeMiddleware::class, OtherMiddleware::class])
->patch('/{id}', ResourceHandler::class, 'route-name');
If this route does not need to be piped through specific middleware(s), you can specify the fourth argument $excludeMiddleware exclude those middlewares at route level (makes sense when there are multiple routes in a group):
$routeCollector->group('/resource', [SomeMiddleware::class, OtherMiddleware::class])
->patch('/{id}', ResourceHandler::class, 'route-name', excludeMiddleware: SomeMiddleware::class);
patch() method arguments:
$routeCollector->group('/resource', [SomeMiddleware::class, OtherMiddleware::class])
->post('', ResourceHandler::class, 'route-name');
If this route does not need to be piped through specific middleware(s), you can specify the fourth argument $excludeMiddleware exclude those middlewares at route level (makes sense when there are multiple routes in a group):
$routeCollector->group('/resource', [SomeMiddleware::class, OtherMiddleware::class])
->post('', ResourceHandler::class, 'route-name', excludeMiddleware: SomeMiddleware::class);
post() method arguments:
$routeCollector->group('/resource', [SomeMiddleware::class, OtherMiddleware::class])
->put('/{id}', ResourceHandler::class, 'route-name');
If this route does not need to be piped through specific middleware(s), you can specify the fourth argument $excludeMiddleware exclude those middlewares at route level (makes sense when there are multiple routes in a group):
$routeCollector->group('/resource', [SomeMiddleware::class, OtherMiddleware::class])
->put('/{id}', ResourceHandler::class, 'route-name', excludeMiddleware: SomeMiddleware::class);
put() method arguments: