Browse Source

url wip

tags/2.0.0-beta
Qiang Xue 12 years ago
parent
commit
f31369e7c1
  1. 12
      framework/web/UrlRule.php
  2. 3
      tests/unit/framework/web/UrlRuleTest.php

12
framework/web/UrlRule.php

@ -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

3
tests/unit/framework/web/UrlRuleTest.php

@ -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'),
),
),
*/
);
}

Loading…
Cancel
Save