diff options
-rw-r--r-- | demos/quickstart/protected/pages/Configurations/UrlMapping.page | 18 | ||||
-rw-r--r-- | framework/Web/THttpRequest.php | 5 | ||||
-rw-r--r-- | framework/Web/TUrlMapping.php | 39 |
3 files changed, 38 insertions, 24 deletions
diff --git a/demos/quickstart/protected/pages/Configurations/UrlMapping.page b/demos/quickstart/protected/pages/Configurations/UrlMapping.page index 22cb866a..dde6854f 100644 --- a/demos/quickstart/protected/pages/Configurations/UrlMapping.page +++ b/demos/quickstart/protected/pages/Configurations/UrlMapping.page @@ -20,13 +20,21 @@ file and before any services. <p>The mapping format is as follows.
<com:TTextHighlighter Language="xml" CssClass="source">
<module id="friendly-url" class="System.Web.TUrlMapping">
- <url pageClass="ClassName" pattern="regexp" parameters.id="regexp" />
+ <url serviceParameter="ClassName" pattern="regexp" parameters.id="regexp" />
</module>
</com:TTextHighlighter>
</p>
-<p>The <tt>PageClass</tt> set the name of class that the matched URL will
-be requested.</p> The <tt>Pattern</tt> and <tt>Parameters</tt> attribute
+<p>The <tt>ServiceParameter</tt> and <tt>ServiceID</tt>
+ (the default ID is 'page') set the service parameter and service ID respectively.
+ The service parameter for the <tt>TPageService</tt> service is the
+ Page class name, e.g., for an URL "index.php?page=Home", "page" is the service ID and the service
+ parameter is "Home". Other services may use the service parameter and ID differently.
+See <a href="?page=Fundamentals.Services">Services</a> for further details.
+</p>
+
+<p>
+The <tt>Pattern</tt> and <tt>Parameters</tt> attribute
values are regular expression patterns that
determine the mapping criteria. The <tt>Pattern</tt> property takes
a regular expression with parameter names enclosed between a left brace '<tt>{</tt>'
@@ -34,13 +42,13 @@ and a right brace '<tt>}</tt>'. The pattens for each parameter can be set using <tt>Parameters</tt>attribute collection.
For example,
<com:TTextHighlighter Language="xml" CssClass="source">
-<url pageClass="Pages.ShowArticles" pattern="articles/{year}/{month}/{day}"
+<url ServiceParameter="Pages.ShowArticles" pattern="articles/{year}/{month}/{day}"
parameters.year="\d{4}" parameters.month="\d{2}" parameters.day="\d+" />
</com:TTextHighlighter>
</p>
The example is equivalent, using regular expression only, to
<com:TTextHighlighter Language="xml" CssClass="source">
-<url pageClass="Pages.ShowArticles">
+<url ServiceParmaeter="Pages.ShowArticles">
<![CDATA[
articles/(?P<year>\d{4})/(?P<month>\d{2})/(?P<day>\d+)
]]>
diff --git a/framework/Web/THttpRequest.php b/framework/Web/THttpRequest.php index 33839ed0..aa690540 100644 --- a/framework/Web/THttpRequest.php +++ b/framework/Web/THttpRequest.php @@ -596,6 +596,11 @@ class THttpRequest extends TApplicationComponent implements IteratorAggregate,Ar }
}
+ protected function getRequestResolved()
+ {
+ return $this->_requestResolved;
+ }
+
/**
* @return array IDs of the available services
*/
diff --git a/framework/Web/TUrlMapping.php b/framework/Web/TUrlMapping.php index 3062b898..62656563 100644 --- a/framework/Web/TUrlMapping.php +++ b/framework/Web/TUrlMapping.php @@ -21,9 +21,9 @@ * The mapping format is as follows.
* <code>
* <module id="friendly-url" class="System.Web.TUrlMapping">
- * <url pageClass="Posts.ViewPost" pattern="post/{id}/?" parameters.id="\d+" />
- * <url pageClass="Posts.ListPost" pattern="archive/{time}/?" parameters.time="\d{6}" />
- * <url pageClass="Posts.ListPost" pattern="category/{cat}/?" parameters.cat="\d+" />
+ * <url ServiceParameter="Posts.ViewPost" pattern="post/{id}/?" parameters.id="\d+" />
+ * <url ServiceParameter="Posts.ListPost" pattern="archive/{time}/?" parameters.time="\d{6}" />
+ * <url ServiceParameter="Posts.ListPost" pattern="category/{cat}/?" parameters.cat="\d+" />
* </module>
* </code>
*
@@ -189,10 +189,10 @@ class TUrlMapping extends THttpRequest {
$request = $this->getRequest();
$id = $pattern->getServiceID();
- $page = $pattern->getPageClass();
+ $param = $pattern->getServiceParameter();
$request->setServiceID($id);
- $request->setServiceParameter($page);
- $request->add($id,$page);
+ $request->setServiceParameter($param);
+ $request->add($id,$param);
}
}
@@ -227,9 +227,10 @@ class TUrlMapping extends THttpRequest * The parameter values are available through the standard <tt>Request</tt>
* object. For example, <tt>$this->Request['year']</tt>.
*
- * The {@link setPageClass PageClass} and {@link setServiceID ServiceID}
- * (the default ID is 'page') set the class and the service that will
- * handle the matching URL.
+ * The {@link setServiceParameter ServiceParameter} and {@link setServiceID ServiceID}
+ * (the default ID is 'page') set the service parameter and service id respectively.
+ * The service parameter for the TPageService is the Page class name, other service
+ * may use the service parameter differently.
*
* For more complicated mappings, the body of the <tt><url></tt>
* can be used to specify the mapping pattern.
@@ -242,9 +243,9 @@ class TUrlMapping extends THttpRequest class TUrlMappingPattern extends TComponent
{
/**
- * @var string page class name.
+ * @var string service parameter such as Page class name.
*/
- private $_pageClass;
+ private $_serviceParameter;
/**
* @var string service ID, default is 'page'.
*/
@@ -277,10 +278,10 @@ class TUrlMappingPattern extends TComponent $body = trim($config->getValue());
if(strlen($body)>0)
$this->setPattern($body);
- if(is_null($this->_pageClass))
+ if(is_null($this->_serviceParameter))
{
throw new TConfigurationException(
- 'dispatcher_url_page_class_missing', $this->getPattern());
+ 'dispatcher_url_service_parameter_missing', $this->getPattern());
}
$this->initializePattern();
}
@@ -310,19 +311,19 @@ class TUrlMappingPattern extends TComponent }
/**
- * @param string name of the page class to handle the request.
+ * @param string service parameter, such as page class name.
*/
- public function setPageClass($value)
+ public function setServiceParameter($value)
{
- $this->_pageClass=$value;
+ $this->_serviceParameter=$value;
}
/**
- * @return string page class name.
+ * @return string service parameter, such as page class name.
*/
- public function getPageClass()
+ public function getServiceParameter()
{
- return $this->_pageClass;
+ return $this->_serviceParameter;
}
/**
|