On this page
Class DashedRoute
This route class will transparently inflect the controller, action and plugin routing parameters, so that requesting /my-plugin/my-controller/my-action
is parsed as ['plugin' => 'MyPlugin', 'controller' => 'MyController', 'action' => 'myAction']
Constants
-
string
PLACEHOLDER_REGEX'#\\{([a-z][a-z0-9-_]*)\\}#i'
Regex for matching braced placholders in route template.
-
array<string>
VALID_METHODS['GET', 'PUT', 'POST', 'PATCH', 'DELETE', 'OPTIONS', 'HEAD']
Valid HTTP methods.
Property Summary
-
$_compiledRoute protected
string|null
The compiled route regular expression
-
$_extensions protected
array<string>
List of connected extensions for this route.
-
$_greedy protected
bool
Is this route a greedy route? Greedy routes have a
/*
in their template -
$_inflectedDefaults protected
bool
Flag for tracking whether the defaults have been inflected.
-
$_name protected
string|null
The name for a route. Fetch with Route::getName();
-
$braceKeys protected
bool
Track whether brace keys
{var}
were used. -
$defaults public
array
Default parameters for a Route
-
$keys public
array
An array of named segments in a Route.
/{controller}/{action}/{id}
has 3 key elements -
$middleware protected
array
List of middleware that should be applied.
-
$options public
array
An array of additional parameters for the Route.
-
$template public
string
The routes template string.
Method Summary
__construct() public
Constructor for a Route
__set_state() public static
Set state magic method to support var_export
_camelizePlugin() protected
Camelizes the previously dashed plugin route taking into account plugin vendors
_dasherize() protected
Helper method for dasherizing keys in a URL array.
_matchMethod() protected
Check whether the URL's HTTP method matches.
_parseArgs() protected
Parse passed parameters into a list of passed args.
_parseExtension() protected
Removes the extension from $url if it contains a registered extension. If no registered extension is found, no extension is returned and the URL is returned unmodified.
_persistParams() protected
Apply persistent parameters to a URL array. Persistent parameters are a special key used during route creation to force route parameters to persist when omitted from a URL array.
_writeRoute() protected
Builds a route regular expression.
_writeUrl() protected
Converts a matching route array into a URL string.
compile() public
Compiles the route's regular expression.
compiled() public
Check if a Route has been compiled into a regular expression.
getExtensions() public
Get the supported extensions for this route.
getMiddleware() public
Get the names of the middleware that should be applied to this route.
getName() public
Get the standardized plugin.controller:action name for a route.
hostMatches() public
Check to see if the host matches the route requirements
match() public
Dasherizes the controller, action and plugin params before passing them on to the parent class.
normalizeAndValidateMethods() protected
Normalize method names to upper case and validate that they are valid HTTP methods.
parse() public
Parses a string URL into an array. If it matches, it will convert the controller and plugin keys to their CamelCased form and action key to camelBacked form.
parseRequest() public
Checks to see if the given URL can be parsed by this route.
setExtensions() public
Set the supported extensions for this route.
setHost() public
Set host requirement
setMethods() public
Set the accepted HTTP methods for this route.
setMiddleware() public
Set the names of the middleware that should be applied to this route.
setPass() public
Set the names of parameters that will be converted into passed parameters
setPatterns() public
Set regexp patterns for routing parameters
setPersist() public
Set the names of parameters that will persisted automatically
staticPath() public
Get the static path portion for this route.
Method Detail
__construct() public
__construct(string $template, array $defaults = [], array<string, mixed> $options = [])
Constructor for a Route
Options
_ext
- Defines the extensions used for this route._middleware
- Define the middleware names for this route.pass
- Copies the listed parameters into params['pass']._method
- Defines the HTTP method(s) the route applies to. It can be a string or array of valid HTTP method name._host
- Define the host name pattern if you want this route to only match specific host names. You can use.*
and to create wildcard subdomains/hosts e.g.*.example.com
matches all subdomains onexample.com
.- '_port` - Define the port if you want this route to only match specific port number.
- '_urldecode' - Set to
false
to disable URL decoding before route parsing.
Parameters
string
$template-
Template string with parameter placeholders
array
$defaults optional-
Defaults for the route.
array<string, mixed>
$options optional-
Array of additional options for the Route
Throws
InvalidArgumentException
When `$options['_method']` are not in `VALID_METHODS` list.
__set_state() public static
__set_state(array<string, mixed> $fields): static
Set state magic method to support var_export
This method helps for applications that want to implement router caching.
Parameters
array<string, mixed>
$fields-
Key/Value of object attributes
Returns
static
_camelizePlugin() protected
_camelizePlugin(string $plugin): string
Camelizes the previously dashed plugin route taking into account plugin vendors
Parameters
string
$plugin-
Plugin name
Returns
string
_dasherize() protected
_dasherize(array $url): array
Helper method for dasherizing keys in a URL array.
Parameters
array
$url-
An array of URL keys.
Returns
array
_matchMethod() protected
_matchMethod(array $url): bool
Check whether the URL's HTTP method matches.
Parameters
array
$url-
The array for the URL being generated.
Returns
bool
_parseArgs() protected
_parseArgs(string $args, array $context): array<string>
Parse passed parameters into a list of passed args.
Return true if a given named $param's $val matches a given $rule depending on $context. Currently implemented rule types are controller, action and match that can be combined with each other.
Parameters
string
$args-
A string with the passed params. eg. /1/foo
array
$context-
The current route context, which should contain controller/action keys.
Returns
array<string>
_parseExtension() protected
_parseExtension(string $url): array
Removes the extension from $url if it contains a registered extension. If no registered extension is found, no extension is returned and the URL is returned unmodified.
Parameters
string
$url-
The url to parse.
Returns
array
_persistParams() protected
_persistParams(array $url, array $params): array
Apply persistent parameters to a URL array. Persistent parameters are a special key used during route creation to force route parameters to persist when omitted from a URL array.
Parameters
array
$url-
The array to apply persistent parameters to.
array
$params-
An array of persistent values to replace persistent ones.
Returns
array
_writeRoute() protected
_writeRoute(): void
Builds a route regular expression.
Uses the template, defaults and options properties to compile a regular expression that can be used to parse request strings.
Returns
void
_writeUrl() protected
_writeUrl(array $params, array $pass = [], array $query = []): string
Converts a matching route array into a URL string.
Composes the string URL using the template used to create the route.
Parameters
array
$params-
The params to convert to a string url
array
$pass optional-
The additional passed arguments
array
$query optional-
An array of parameters
Returns
string
compile() public
compile(): string
Compiles the route's regular expression.
Modifies defaults property so all necessary keys are set and populates $this->names with the named routing elements.
Returns
string
compiled() public
compiled(): bool
Check if a Route has been compiled into a regular expression.
Returns
bool
getExtensions() public
getExtensions(): array<string>
Get the supported extensions for this route.
Returns
array<string>
getMiddleware() public
getMiddleware(): array
Get the names of the middleware that should be applied to this route.
Returns
array
getName() public
getName(): string
Get the standardized plugin.controller:action name for a route.
Returns
string
hostMatches() public
hostMatches(string $host): bool
Check to see if the host matches the route requirements
Parameters
string
$host-
The request's host name
Returns
bool
match() public
match(array $url, array $context = []): string|null
Dasherizes the controller, action and plugin params before passing them on to the parent class.
If the URL matches the route parameters and settings, then return a generated string URL. If the URL doesn't match the route parameters, false will be returned. This method handles the reverse routing or conversion of URL arrays into string URLs.
Parameters
array
$url-
Array of parameters to convert to a string.
array
$context optional-
An array of the current request context. Contains information such as the current host, scheme, port, and base directory.
Returns
string|null
normalizeAndValidateMethods() protected
normalizeAndValidateMethods(array<string>|string $methods): array<string>|string
Normalize method names to upper case and validate that they are valid HTTP methods.
Parameters
array<string>|string
$methods-
Methods.
Returns
array<string>|string
Throws
InvalidArgumentException
When methods are not in `VALID_METHODS` list.
parse() public
parse(string $url, string $method = ''): array|null
Parses a string URL into an array. If it matches, it will convert the controller and plugin keys to their CamelCased form and action key to camelBacked form.
If the route can be parsed an array of parameters will be returned; if not null
will be returned. String URLs are parsed if they match a routes regular expression.
Parameters
string
$url-
The URL to parse
string
$method optional-
The HTTP method.
Returns
array|null
parseRequest() public
parseRequest(Psr\Http\Message\ServerRequestInterface $request): array|null
Checks to see if the given URL can be parsed by this route.
If the route can be parsed an array of parameters will be returned; if not null
will be returned.
Parameters
Psr\Http\Message\ServerRequestInterface
$request-
The URL to attempt to parse.
Returns
array|null
setExtensions() public
setExtensions(array<string> $extensions): $this
Set the supported extensions for this route.
Parameters
array<string>
$extensions-
The extensions to set.
Returns
$this
setHost() public
setHost(string $host): $this
Set host requirement
Parameters
string
$host-
The host name this route is bound to
Returns
$this
setMethods() public
setMethods(array<string> $methods): $this
Set the accepted HTTP methods for this route.
Parameters
array<string>
$methods-
The HTTP methods to accept.
Returns
$this
Throws
InvalidArgumentException
When methods are not in `VALID_METHODS` list.
setMiddleware() public
setMiddleware(array $middleware): $this
Set the names of the middleware that should be applied to this route.
Parameters
array
$middleware-
The list of middleware names to apply to this route. Middleware names will not be checked until the route is matched.
Returns
$this
setPass() public
setPass(array<string> $names): $this
Set the names of parameters that will be converted into passed parameters
Parameters
array<string>
$names-
The names of the parameters that should be passed.
Returns
$this
setPatterns() public
setPatterns(array<string> $patterns): $this
Set regexp patterns for routing parameters
If any of your patterns contain multibyte values, the multibytePattern
mode will be enabled.
Parameters
array<string>
$patterns-
The patterns to apply to routing elements
Returns
$this
setPersist() public
setPersist(array $names): $this
Set the names of parameters that will persisted automatically
Persistent parameters allow you to define which route parameters should be automatically included when generating new URLs. You can override persistent parameters by redefining them in a URL or remove them by setting the persistent parameter to false
.
// remove a persistent 'date' parameter
Router::url(['date' => false', ...]);
Parameters
array
$names-
The names of the parameters that should be passed.
Returns
$this
staticPath() public
staticPath(): string
Get the static path portion for this route.
Returns
string
Property Detail
$_compiledRoute protected
The compiled route regular expression
Type
string|null
$_extensions protected
List of connected extensions for this route.
Type
array<string>
$_greedy protected
Is this route a greedy route? Greedy routes have a /*
in their template
Type
bool
$_inflectedDefaults protected
Flag for tracking whether the defaults have been inflected.
Default values need to be inflected so that they match the inflections that match() will create.
Type
bool
$_name protected
The name for a route. Fetch with Route::getName();
Type
string|null
$braceKeys protected
Track whether brace keys {var}
were used.
Type
bool
$defaults public
Default parameters for a Route
Type
array
$keys public
An array of named segments in a Route. /{controller}/{action}/{id}
has 3 key elements
Type
array
$middleware protected
List of middleware that should be applied.
Type
array
$options public
An array of additional parameters for the Route.
Type
array
$template public
The routes template string.
Type
string
© 2005–present The Cake Software Foundation, Inc.
Licensed under the MIT License.
CakePHP is a registered trademark of Cake Software Foundation, Inc.
We are not endorsed by or affiliated with CakePHP.
https://api.cakephp.org/4.4/class-Cake.Routing.Route.DashedRoute.html