Fix #2003 remove default act from short URL if there are no arguments

This commit is contained in:
Kijin Sung 2022-10-29 22:06:36 +09:00
parent 0adce0dd47
commit ad23796906
2 changed files with 15 additions and 0 deletions

View file

@ -363,6 +363,11 @@ class Router
$internal_url = self::_insertRouteVars($result, $args2);
return $args[$prefix_type] . ($internal_url ? ('/' . $internal_url) : '');
}
elseif ($args['act'] === $action_info->default_index_act && !count($args2))
{
self::$_route_cache[$rewrite_level][$keys_string] = '$' . $prefix_type . '$act:delete';
return $args[$prefix_type];
}
}
// Check other modules for $act.

View file

@ -31,6 +31,16 @@ class RouterTest extends \Codeception\TestCase\Test
getController('module')->registerActionForwardRoutes('member');
$args = array('mid' => 'board', 'act' => 'dispBoardContent');
$this->assertEquals('board', Rhymix\Framework\Router::getURL($args, 2));
$this->assertEquals('index.php?mid=board&act=dispBoardContent', Rhymix\Framework\Router::getURL($args, 1));
$this->assertEquals('index.php?mid=board&act=dispBoardContent', Rhymix\Framework\Router::getURL($args, 0));
$args = array('mid' => 'board', 'page' => 3);
$this->assertEquals('board/page/3', Rhymix\Framework\Router::getURL($args, 2));
$this->assertEquals('board?page=3', Rhymix\Framework\Router::getURL($args, 1));
$this->assertEquals('index.php?mid=board&page=3', Rhymix\Framework\Router::getURL($args, 0));
$args = array('mid' => 'board', 'document_srl' => 123);
$this->assertEquals('board/123', Rhymix\Framework\Router::getURL($args, 2));
$this->assertEquals('board/123', Rhymix\Framework\Router::getURL($args, 1));