refactor(backurl): add mergeQueryToCurrentPath for safe self links
This commit is contained in:
@@ -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 为空则原样返回)。
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user