Class EntityRoute

Matches entities to routes

This route will match by entity and map its fields to the URL pattern by comparing the field names with the template vars. This makes it easy and convenient to change routes globally.

Namespace: Cake\Routing\Route

Constants summary

  • array
    VALID_METHODS
    ['GET', 'PUT', 'POST', 'PATCH', 'DELETE', 'OPTIONS', 'HEAD']

Properties summary

  • $_compiledRoute protected
    string|null

    The compiled route regular expression

  • $_extensions protected
    string[]

    List of connected extensions for this route.

  • $_greedy protected
    bool

    Is this route a greedy route? Greedy routes have a /* in their template

  • $_name protected
    string|null

    The name for a route. Fetch with Route::getName();

  • $braceKeys protected
    bool

    Track whether or not brace keys {var} were used.

  • $defaults public
    array

    Default parameters for a Route

  • $keys public
    array

    An array of named segments in a Route.

  • $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

  • _checkEntity() protected

    Checks that we really deal with an entity object

  • _matchMethod() protected

    Check whether or not 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.

  • _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

    Match by entity and map its fields to the URL pattern by comparing the field names with the template vars.

  • normalizeAndValidateMethods() protected

    Normalize method names to upper case and validate that they are valid HTTP methods.

  • parse() public

    Checks to see if the given URL can be parsed by this route.

  • 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 $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'].
  • _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 on example.com.
  • _method - Defines the HTTP method(s) the route applies to. It can be a string or array of valid HTTP method name.

Parameters

string $template

Template string with parameter placeholders

array $defaults optional

Defaults for the route.

array $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 $fields)

Set state magic method to support var_export

This method helps for applications that want to implement router caching.

Parameters

array $fields

Key/Value of object attributes

Returns

static

A new instance of the route

_checkEntity() protected

_checkEntity(mixed $entity)

Checks that we really deal with an entity object

Parameters

\ArrayAccess|array $entity

Entity value from the URL options

Throws

RuntimeException

_matchMethod() protected

_matchMethod(array $url)

Check whether or not 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)

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

string[]

Array of passed args.

_parseExtension() protected

_parseExtension(string $url)

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

containing url, extension

_persistParams() protected

_persistParams(array $url, array $params)

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

An array with persistent parameters applied.

_writeRoute() protected

_writeRoute()

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.

_writeUrl() protected

_writeUrl(array $params, array $pass, array $query)

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

Composed route string.

compile() public

compile()

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

Returns a string regular expression of the compiled route.

compiled() public

compiled()

Check if a Route has been compiled into a regular expression.

Returns

bool

getExtensions() public

getExtensions()

Get the supported extensions for this route.

Returns

string[]

getMiddleware() public

getMiddleware()

Get the names of the middleware that should be applied to this route.

Returns

array

getName() public

getName()

Get the standardized plugin.controller:action name for a route.

Returns

string

hostMatches() public

hostMatches(string $host)

Check to see if the host matches the route requirements

Parameters

string $host

The request's host name

Returns

bool

Whether or not the host matches any conditions set in for this route.

match() public

match(array $url, array $context)

Match by entity and map its fields to the URL pattern by comparing the field names with the template vars.

If a routing key is defined in both $url and the entity, the value defined in $url will be preferred.

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

Either a string URL or null.

normalizeAndValidateMethods() protected

normalizeAndValidateMethods(mixed $methods)

Normalize method names to upper case and validate that they are valid HTTP methods.

Parameters

string|string[] $methods

Methods.

Returns

string|string[]

Throws

InvalidArgumentException
When methods are not in `VALID_METHODS` list.

parse() public

parse(string $url, string $method)

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 false will be returned. String URLs are parsed if they match a routes regular expression.

Parameters

string $url

The URL to attempt to parse.

string $method

The HTTP method of the request being parsed.

Returns

array|null

An array of request parameters, or null on failure.

Throws

InvalidArgumentException
When method is not an empty string or in `VALID_METHODS` list.

parseRequest() public

parseRequest(\Psr\Http\Message\ServerRequestInterface $request)

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 false will be returned.

Parameters

\Psr\Http\Message\ServerRequestInterface $request

The URL to attempt to parse.

Returns

array|null

An array of request parameters, or null on failure.

setExtensions() public

setExtensions(array $extensions)

Set the supported extensions for this route.

Parameters

string[] $extensions

The extensions to set.

Returns

$this

setHost() public

setHost(string $host)

Set host requirement

Parameters

string $host

The host name this route is bound to

Returns

$this

setMethods() public

setMethods(array $methods)

Set the accepted HTTP methods for this route.

Parameters

string[] $methods

The HTTP methods to accept.

Returns

$this

Throws

InvalidArgumentException
When methods are not in `VALID_METHODS` list.

setMiddleware() public

setMiddleware(array $middleware)

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 $names)

Set the names of parameters that will be converted into passed parameters

Parameters

string[] $names

The names of the parameters that should be passed.

Returns

$this

setPatterns() public

setPatterns(array $patterns)

Set regexp patterns for routing parameters

If any of your patterns contain multibyte values, the multibytePattern mode will be enabled.

Parameters

string[] $patterns

The patterns to apply to routing elements

Returns

$this

setPersist() public

setPersist(array $names)

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()

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

string[]

$_greedy protected

Is this route a greedy route? Greedy routes have a /* in their template

Type

bool

$_name protected

The name for a route. Fetch with Route::getName();

Type

string|null

$braceKeys protected

Track whether or not 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.1/class-Cake.Routing.Route.EntityRoute.html