Commit f31369e7 by Qiang Xue

url wip

parent 712f4dae
......@@ -112,8 +112,13 @@ class UrlRule extends Object
// match the route part first
if ($route !== $this->route) {
if ($this->routeRule !== null && preg_match($this->routeRule, $route, $matches)) {
foreach ($this->routeParams as $key => $name) {
$tr[$name] = $matches[$key];
foreach ($this->routeParams as $name => $token) {
if (isset($this->defaults[$name]) && strcmp($this->defaults[$name], $matches[$name]) === 0) {
$tr[$token] = '';
$tr["/$token/"] = '/';
} else {
$tr[$token] = $matches[$name];
}
}
} else {
return false;
......@@ -123,6 +128,9 @@ class UrlRule extends Object
// match default params
// if a default param is not in the route pattern, its value must also be matched
foreach ($this->defaults as $name => $value) {
if (isset($this->routeParams[$name])) {
continue;
}
if (!isset($params[$name])) {
return false;
} elseif (strcmp($params[$name], $value) === 0) { // strcmp will do string conversion automatically
......
......@@ -244,7 +244,6 @@ class UrlRuleTest extends \yiiunit\TestCase
array('post/index', array('controller' => 'comment'), 'post/index?controller=comment'),
),
),
/* this is not supported
array(
'route has default parameter',
array(
......@@ -256,10 +255,10 @@ class UrlRuleTest extends \yiiunit\TestCase
array('post/view', array('page' => 1), 'post/view?page=1'),
array('comment/view', array('page' => 1), 'comment/view?page=1'),
array('test/view', array('page' => 1), false),
array('test/index', array('page' => 1), false),
array('post/index', array('page' => 1), 'post?page=1'),
),
),
*/
);
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment