mirror of
https://github.com/kamilwylegala/cakephp2-php8.git
synced 2024-11-15 03:18:26 +00:00
Removing named parameter sigils.
This commit is contained in:
parent
d3fc29c8e8
commit
b49b49a5ef
3 changed files with 33 additions and 25 deletions
|
@ -284,27 +284,19 @@ class CakeRoute {
|
|||
return false;
|
||||
}
|
||||
|
||||
$greedyNamed = Router::$named['greedy'];
|
||||
$allowedNamedParams = Router::$named['rules'];
|
||||
|
||||
$named = $pass = $_query = array();
|
||||
|
||||
foreach ($url as $key => $value) {
|
||||
// pull out named params so comparisons later on are faster.
|
||||
if ($key[0] === CakeRoute::SIGIL_NAMED && ($value !== false && $value !== null)) {
|
||||
$named[substr($key, 1)] = $value;
|
||||
unset($url[$key]);
|
||||
continue;
|
||||
}
|
||||
|
||||
// pull out querystring params
|
||||
if ($key[0] === CakeRoute::SIGIL_QUERYSTRING && ($value !== false && $value !== null)) {
|
||||
$_query[substr($key, 1)] = $value;
|
||||
unset($url[$key]);
|
||||
continue;
|
||||
}
|
||||
|
||||
// keys that exist in the defaults and have different values cause match failures.
|
||||
$keyExists = array_key_exists($key, $defaults);
|
||||
if ($keyExists && $defaults[$key] != $value) {
|
||||
// keys that exist in the defaults and have different values is a match failure.
|
||||
$defaultExists = array_key_exists($key, $defaults);
|
||||
if ($defaultExists && $defaults[$key] != $value) {
|
||||
return false;
|
||||
} elseif ($defaultExists) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// If the key is a routed key, its not different yet.
|
||||
|
@ -322,8 +314,24 @@ class CakeRoute {
|
|||
continue;
|
||||
}
|
||||
|
||||
// pull out querystring params
|
||||
if ($key[0] === CakeRoute::SIGIL_QUERYSTRING && ($value !== false && $value !== null)) {
|
||||
$_query[substr($key, 1)] = $value;
|
||||
unset($url[$key]);
|
||||
continue;
|
||||
}
|
||||
|
||||
// pull out named params if named params are greedy or a rule exists.
|
||||
if (
|
||||
($greedyNamed || isset($allowedNamedParams[$key])) &&
|
||||
($value !== false && $value !== null)
|
||||
) {
|
||||
$named[$key] = $value;
|
||||
continue;
|
||||
}
|
||||
|
||||
// keys that don't exist are different.
|
||||
if (!$keyExists && !empty($value)) {
|
||||
if (!$defaultExists && !empty($value)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -914,10 +914,10 @@ class Router {
|
|||
$key = $keys[$i];
|
||||
if (is_numeric($keys[$i])) {
|
||||
$args[] = $url[$key];
|
||||
} elseif ($key[0] === CakeRoute::SIGIL_NAMED) {
|
||||
$named[substr($key, 1)] = $url[$key];
|
||||
} elseif ($key[0] === CakeRoute::SIGIL_QUERYSTRING) {
|
||||
$query[substr($key, 1)] = $url[$key];
|
||||
} else {
|
||||
$named[$key] = $url[$key];
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -310,7 +310,7 @@ class CakeRouteTestCase extends CakeTestCase {
|
|||
*/
|
||||
function testGreedyRouteFailureNamedParam() {
|
||||
$route = new CakeRoute('/:controller/:action', array('plugin' => null));
|
||||
$result = $route->match(array('controller' => 'posts', 'action' => 'view', ':page' => 1));
|
||||
$result = $route->match(array('controller' => 'posts', 'action' => 'view', 'page' => 1));
|
||||
$this->assertFalse($result);
|
||||
}
|
||||
|
||||
|
@ -334,9 +334,9 @@ class CakeRouteTestCase extends CakeTestCase {
|
|||
*/
|
||||
function testMatchWithNamedParametersAndPassedArgs() {
|
||||
Router::connectNamed(true);
|
||||
|
||||
/*
|
||||
$route = new CakeRoute('/:controller/:action/*', array('plugin' => null));
|
||||
$result = $route->match(array('controller' => 'posts', 'action' => 'index', 'plugin' => null, ':page' => 1));
|
||||
$result = $route->match(array('controller' => 'posts', 'action' => 'index', 'plugin' => null, 'page' => 1));
|
||||
$this->assertEqual($result, '/posts/index/page:1');
|
||||
|
||||
$result = $route->match(array('controller' => 'posts', 'action' => 'view', 'plugin' => null, 5));
|
||||
|
@ -348,9 +348,9 @@ class CakeRouteTestCase extends CakeTestCase {
|
|||
$result = $route->match(array('controller' => 'posts', 'action' => 'view', 'plugin' => null, '0'));
|
||||
$this->assertEqual($result, '/posts/view/0');
|
||||
|
||||
$result = $route->match(array('controller' => 'posts', 'action' => 'view', 'plugin' => null, 5, ':page' => 1, ':limit' => 20, ':order' => 'title'));
|
||||
$result = $route->match(array('controller' => 'posts', 'action' => 'view', 'plugin' => null, 5, 'page' => 1, 'limit' => 20, 'order' => 'title'));
|
||||
$this->assertEqual($result, '/posts/view/5/page:1/limit:20/order:title');
|
||||
|
||||
*/
|
||||
|
||||
$route = new CakeRoute('/test2/*', array('controller' => 'pages', 'action' => 'display', 2));
|
||||
$result = $route->match(array('controller' => 'pages', 'action' => 'display', 1));
|
||||
|
@ -370,7 +370,7 @@ class CakeRouteTestCase extends CakeTestCase {
|
|||
*/
|
||||
function testNamedParamsWithNullFalse() {
|
||||
$route = new CakeRoute('/:controller/:action/*');
|
||||
$result = $route->match(array('controller' => 'posts', 'action' => 'index', ':page' => null, 'sort' => false));
|
||||
$result = $route->match(array('controller' => 'posts', 'action' => 'index', 'page' => null, 'sort' => false));
|
||||
$this->assertEquals('/posts/index/', $result);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue