完善Url生成对动态变量和静态变量的混合传参

This commit is contained in:
thinkphp
2016-03-31 11:00:12 +08:00
parent 07b52db1a2
commit cfe332af2f

View File

@@ -214,18 +214,19 @@ class Url
$url = str_replace('$', '[--think--]', $url); $url = str_replace('$', '[--think--]', $url);
} }
// 检查变量匹配 // 检查变量匹配
$array = $vars;
if ($pattern && self::pattern($pattern, $vars)) { if ($pattern && self::pattern($pattern, $vars)) {
foreach ($pattern as $key => $val) { foreach ($pattern as $key => $val) {
if (isset($vars[$key])) { if (isset($vars[$key])) {
$url = str_replace(['[:' . $key . ']', '<' . $key . '?>', ':' . $key . '', '<' . $key . '>'], $vars[$key], $url); $url = str_replace(['[:' . $key . ']', '<' . $key . '?>', ':' . $key . '', '<' . $key . '>'], $vars[$key], $url);
unset($vars[$key]); unset($array[$key]);
} else { } else {
$url = str_replace(['[:' . $key . ']', '<' . $key . '?>'], '', $url); $url = str_replace(['[:' . $key . ']', '<' . $key . '?>'], '', $url);
} }
} }
return $url; }
} elseif (!empty($param) && $param == $vars) { if (!empty($param) && array_intersect($param, $array) == $param) {
$vars = []; $vars = array_diff($array, $param);
return $url; return $url;
} }
} }