TUrlMappingPattern class.
TUrlMappingPattern represents a pattern used to parse and construct URLs. If the currently requested URL matches the pattern, it will alter the THttpRequest parameters. If a constructUrl() call matches the pattern parameters, the pattern will generate a valid URL. In both case, only the PATH_INFO part of a URL is parsed/constructed using the pattern.
To specify the pattern, set the Pattern property. Pattern takes a string expression with parameter names enclosed between a left brace '{' and a right brace '}'. The patterns for each parameter can be set using Parameters attribute collection. For example
- <url ... pattern="articles/{year}/{month}/{day}"
- parameters.year="\d{4}" parameters.month="\d{2}" parameters.day="\d+" />
In the above example, the pattern contains 3 parameters named "year", "month" and "day". The pattern for these parameters are, respectively, "\d{4}" (4 digits), "\d{2}" (2 digits) and "\d+" (1 or more digits). Essentially, the <tt>Parameters</tt> attribute name and values are used as substrings in replacing the placeholders in the <tt>Pattern</tt> string to form a complete regular expression string.
For more complicated patterns, one may specify the pattern using a regular expression by RegularExpression. For example, the above pattern is equivalent to the following regular expression-based pattern:
- /^articles/(?P<year>d{4})/(?P<month>d{2})/(?P<day>d+)$/u
The above regular expression used the "named group" feature available in PHP. Notice that you need to escape the slash in regular expressions.
Thus, only an url that matches the pattern will be valid. For example, a URL <tt>http://example.com/index.php/articles/2006/07/21</tt> will match the above pattern, while <tt>http://example.com/index.php/articles/2006/07/hello</tt> will not since the "day" parameter pattern is not satisfied.
The parameter values are available through the <tt>THttpRequest</tt> instance (e.g. <tt>$this->Request['year']</tt>).
The ServiceParameter and ServiceID (the default ID is 'page') set the service parameter and service id respectively.
| Method Summary |
|
string
|
constructUrl
( array $getItems, boolean $encodeAmpersand, boolean $encodeGetItems)
Constructs a URL using this pattern.
|
|
boolean
|
|
|
boolean
|
Returns a value indicating whether to use this pattern to construct URL.
|
|
TUrlManager
|
|
|
protected
string
|
Substitute the parameter key value pairs as named groupings in the regular expression matching pattern.
|
|
TAttributeCollection
|
|
|
string
|
|
|
array
|
Uses URL pattern (or full regular expression if available) to match the given url path.
|
|
string
|
|
|
string
|
|
|
string
|
|
|
void
|
Initializes the pattern.
|
|
void
|
|
|
void
|
Sets a value indicating whether to enable custom constructUrl using this pattern
|
|
void
|
|
|
void
|
|
|
void
|
|
|
void
|
|
|
void
|
|
|
boolean
|
|
| Method Details |
constructUrl
| public string constructUrl |
(array $getItems , boolean $encodeAmpersand , boolean $encodeGetItems ) |
Constructs a URL using this pattern.
| Input |
| array | $getItems | list of GET variables |
| boolean | $encodeAmpersand | whether the ampersand should be encoded in the constructed URL |
| boolean | $encodeGetItems | whether the GET variables should be encoded in the constructed URL |
| Output |
|
string
| the constructed URL |
| Exception |
|
getCaseSensitive
| public boolean getCaseSensitive |
() |
| Output |
|
boolean
| whether the Pattern should be treated as case sensititve. Defaults to true. |
| Exception |
|
getEnableCustomUrl
| public boolean getEnableCustomUrl |
() |
Returns a value indicating whether to use this pattern to construct URL.
| Output |
|
boolean
| whether to enable custom constructUrl. Defaults to true. |
| Exception |
|
getManager
|
getParameterizedPattern
| protected string getParameterizedPattern |
() |
Substitute the parameter key value pairs as named groupings in the regular expression matching pattern.
| Output |
|
string
| regular expression pattern with parameter subsitution |
| Exception |
|
getParameters
|
getPattern
| public string getPattern |
() |
| Output |
|
string
| url pattern to match. Defaults to ''. |
| Exception |
|
getPatternMatches
Uses URL pattern (or full regular expression if available) to match the given url path.
| Input |
| THttpRequest | $request | the request module |
| Output |
|
array
| matched parameters, empty if no matches. |
| Exception |
|
getRegularExpression
| public string getRegularExpression |
() |
| Output |
|
string
| full regular expression mapping pattern |
| Exception |
|
getServiceID
| public string getServiceID |
() |
| Output |
|
string
| service id. |
| Exception |
|
getServiceParameter
| public string getServiceParameter |
() |
| Output |
|
string
| service parameter, such as page class name. |
| Exception |
|
init
Initializes the pattern.
| Input |
| TXmlElement | $config | configuration for this module. |
| Output |
| Exception |
| throws | TConfigurationException if service parameter is not specified |
|
setCaseSensitive
| public void setCaseSensitive |
(boolean $value ) |
| Input |
| boolean | $value | whether the Pattern should be treated as case sensititve. |
| Output |
| Exception |
|
setEnableCustomUrl
| public void setEnableCustomUrl |
(boolean $value ) |
Sets a value indicating whether to enable custom constructUrl using this pattern
| Input |
| boolean | $value | whether to enable custom constructUrl. |
| Output |
| Exception |
|
setParameters
|
setPattern
| public void setPattern |
(string $value ) |
| Input |
| string | $value | url pattern to match. |
| Output |
| Exception |
|
setRegularExpression
| public void setRegularExpression |
(string $value ) |
| Input |
| string | $value | full regular expression mapping pattern. |
| Output |
| Exception |
|
setServiceID
| public void setServiceID |
(string $value ) |
| Input |
| string | $value | service id to handle. |
| Output |
| Exception |
|
setServiceParameter
| public void setServiceParameter |
(string $value ) |
| Input |
| string | $value | service parameter, such as page class name. |
| Output |
| Exception |
|
supportCustomUrl
| public boolean supportCustomUrl |
(array $getItems ) |
| Input |
| array | $getItems | list of GET items to be put in the constructed URL |
| Output |
|
boolean
| whether this pattern IS the one for constructing the URL with the specified GET items. |
| Exception |
|