Sfoglia il codice sorgente

updated RouteBase::getLink

Piotr Labudda 9 anni fa
parent
commit
d0abf49990
1 ha cambiato i file con 14 aggiunte e 2 eliminazioni
  1. 14 2
      SE/se-lib/RouteBase.php

+ 14 - 2
SE/se-lib/RouteBase.php

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