refactor(backurl): add mergeQueryToCurrentPath for safe self links

This commit is contained in:
萝卜
2026-03-17 04:20:17 +08:00
parent a005b4edb4
commit 842eeb3e39
2 changed files with 29 additions and 16 deletions

View File

@@ -95,6 +95,32 @@ class BackUrl
return $url;
}
/**
* 合并 query 到当前 path不自动处理 back用于“保留筛选上下文但不透传 back”的场景。
*
* @param array $baseQuery 例如 request()->query() 并移除 back 后的数组
* @param array $overrides 覆盖字段null 表示删除)
*/
public static function mergeQueryToCurrentPath(array $baseQuery, array $overrides = []): string
{
$q = $baseQuery;
foreach ($overrides as $k => $v) {
if ($v === null) {
unset($q[$k]);
} else {
$q[$k] = $v;
}
}
$url = '/' . ltrim(request()->path(), '/');
if (count($q) > 0) {
$url .= '?' . \Illuminate\Support\Arr::query($q);
}
return $url;
}
/**
* 给指定站内相对路径附加安全 back back 为空则原样返回)。
*