Route Collections
Introduction
A route collection is an object that represents a group of routes. A route collection may include a path prefix to be prepended to the path of each route in the collection. Further, a route collection may accept other route collections as children, effectively creating a routing tree.
The most common use of route collections is to group routes with a common path prefix.
Class Synopsis
class RouteCollection
{
constructor(string prefix, array routes = [], array collections = []);
addRoute(Route route);
addRoutes(Route[] routes);
addCollection(RouteCollection collection);
addCollections(RouteCollection[] collections);
findRouteByPath(string path);
findRouteByName(string name, bool deep = false);
findCollectionByPrefix(string prefix);
getRoutes() : Route[];
getCollections() : RouteCollection[];
getFlattenedRoutes() : Route[];
getFlattenedCollections() : RouteCollection[];
getPathPrefix() : string;
getParentCollection() : RouteCollection|null;
setPathPrefix(string prefix);
setParentCollection(RouteCollection collection);
}
Examples
Example: Grouping routes with a shared path prefix
let routes = new RouteCollection('/sandbox', [
// Matches #/sandbox/index
new Route('sandbox.index', '/index', 'Sandbox.Sandbox.index'),
// Matches #/sandbox/demo
new Route('sandbox.demo' '/demo', 'Sandbox.Sandbox.demo')
];
Example: Chaining collections declaratively
let routes = new RouteCollection('/sandbox', [
// Matches #/sandbox/index
new Route('sandbox.index', '/index', 'Sandbox.Sandbox.index')
], [
new RouteCollection('/section', [
// Matches #/sandbox/section/demo
new Route('sandbox.demo', '/demo', 'Sandbox.Sandbox.demo')
])
]);
Example: Chaining collections imperatively
let sandboxRoutes = new RouteCollection('/sandbox', [
// Matches #/sandbox/index
new Route('sandbox.index', '/index', 'Sandbox.Sandbox.index')
]);
let sectionRoutes = new RouteCollection('/section', [
// Matches #/section/demo
new Route('sandbox.demo', '/demo', 'Sandbox.Sandbox.demo')
]);
sandboxRoutes.addCollection(sectionRoutes);
// sandbox.index still matches #/sandbox/index
// sandbox.demo now matches #/sandbox/section/demo
Last updated