|
|
@@ -21,11 +21,23 @@ class RouteBase {
|
|
|
die("default task not implemented");
|
|
|
}
|
|
|
|
|
|
- public function getLink($task = '') {
|
|
|
+ public function getLink($task = '', $args = null) {
|
|
|
$clsName = get_class($this);
|
|
|
if ('Route_' != substr($clsName, 0, strlen('Route_'))) throw new Exception("Wrong route class name '{$clsName}'");
|
|
|
$routeName = substr($clsName, strlen('Route_'));
|
|
|
- return Request::getPathUri() . "index.php?_route={$routeName}" . (!empty($task) ? "&_task={$task}" : "");
|
|
|
+ if (empty($args)) return Request::getPathUri() . "index.php?_route={$routeName}" . (!empty($task) ? "&_task={$task}" : "");
|
|
|
+ if (is_string($args)) {
|
|
|
+ return Request::getPathUri() . "index.php?_route={$routeName}" . (!empty($task) ? "&_task={$task}" : "") . ltrim($args, '&');
|
|
|
+ }
|
|
|
+ if (is_array($args)) {
|
|
|
+ $urlArgs = [];
|
|
|
+ $uniqArgs = [];
|
|
|
+ if (!empty($task)) $uniqArgs['_task'] = $task;
|
|
|
+ foreach ($args as $name => $val) $uniqArgs[$name] = $val;
|
|
|
+ foreach ($uniqArgs as $name => $val) $urlArgs[] = "{$name}={$val}";
|
|
|
+ return Request::getPathUri() . "index.php?_route={$routeName}" . (!empty($urlArgs) ? '&' . implode('&', $urlArgs) : '');
|
|
|
+ }
|
|
|
+ throw new Exception("Not Implemented args type", 501);
|
|
|
}
|
|
|
|
|
|
public function runTask($task) {
|