From ad2379690699e3f409418028e3ca01c0f407425b Mon Sep 17 00:00:00 2001 From: Kijin Sung Date: Sat, 29 Oct 2022 22:06:36 +0900 Subject: [PATCH] Fix #2003 remove default act from short URL if there are no arguments --- common/framework/router.php | 5 +++++ tests/unit/framework/RouterTest.php | 10 ++++++++++ 2 files changed, 15 insertions(+) diff --git a/common/framework/router.php b/common/framework/router.php index 8920f1613..3b68648eb 100644 --- a/common/framework/router.php +++ b/common/framework/router.php @@ -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. diff --git a/tests/unit/framework/RouterTest.php b/tests/unit/framework/RouterTest.php index 8d96d1be5..9b9d3ae50 100644 --- a/tests/unit/framework/RouterTest.php +++ b/tests/unit/framework/RouterTest.php @@ -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));