Commit f31369e7 by Qiang Xue

url wip

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