From b759a87a57c6bc771d05f827e946a704eed99eed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=90=9D=E5=8D=9C?= Date: Sat, 14 Mar 2026 18:46:18 +0000 Subject: [PATCH] =?UTF-8?q?refactor:=20BackUrl::withBack=20=E7=BB=9F?= =?UTF-8?q?=E4=B8=80=20allUrl=20=E7=94=9F=E6=88=90=EF=BC=88=E6=B8=85?= =?UTF-8?q?=E7=A9=BA=E7=AD=9B=E9=80=89=E4=BD=86=E4=BF=9D=E7=95=99=20back?= =?UTF-8?q?=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Support/BackUrl.php | 24 +++++++++++++++++++ resources/views/admin/plans/index.blade.php | 5 +--- .../admin/platform_orders/index.blade.php | 5 +--- .../admin/site_subscriptions/index.blade.php | 5 +--- 4 files changed, 27 insertions(+), 12 deletions(-) diff --git a/app/Support/BackUrl.php b/app/Support/BackUrl.php index b92997c..feccdff 100644 --- a/app/Support/BackUrl.php +++ b/app/Support/BackUrl.php @@ -68,6 +68,30 @@ class BackUrl return $url; } + /** + * 给指定站内相对路径附加安全 back(若 back 为空则原样返回)。 + * + * 用途:列表页“全部/返回来源”等需要清空筛选但保留 back 的场景。 + */ + public static function withBack(string $path, string $safeBackForLinks = ''): string + { + $path = (string) $path; + + if ($safeBackForLinks === '') { + return $path; + } + + // 仅支持站内相对路径;若调用方传入了异常值,这里不做拼接,直接返回原 path。 + if ($path === '' || !str_starts_with($path, '/')) { + return $path; + } + + // 若 path 已带 query,则追加 &back=;否则追加 ?back= + $sep = str_contains($path, '?') ? '&' : '?'; + + return $path . $sep . \Illuminate\Support\Arr::query(['back' => $safeBackForLinks]); + } + /** * 当前路径下的“快捷筛选”链接构造器: * - 仅保留指定上下文键(例如 merchant_id/plan_id/keyword/lead_id 等) diff --git a/resources/views/admin/plans/index.blade.php b/resources/views/admin/plans/index.blade.php index 1a1bbae..e4b08a9 100644 --- a/resources/views/admin/plans/index.blade.php +++ b/resources/views/admin/plans/index.blade.php @@ -55,10 +55,7 @@ }; // “全部”:清空筛选,但保留安全 back(用于返回来源页) - $allUrl = '/admin/plans'; - if ($safeBackForLinks !== '') { - $allUrl .= '?' . \Illuminate\Support\Arr::query(['back' => $safeBackForLinks]); - } + $allUrl = \App\Support\BackUrl::withBack('/admin/plans', $safeBackForLinks); @endphp
diff --git a/resources/views/admin/platform_orders/index.blade.php b/resources/views/admin/platform_orders/index.blade.php index baa9fa6..0c69493 100644 --- a/resources/views/admin/platform_orders/index.blade.php +++ b/resources/views/admin/platform_orders/index.blade.php @@ -141,10 +141,7 @@ // “全部”:清空筛选,但保留 back(用于返回来源页) // “全部”:清空筛选,但保留安全 back(用于返回来源页) - $allUrl = '/admin/platform-orders'; - if ($safeBackForLinks !== '') { - $allUrl .= '?' . \Illuminate\Support\Arr::query(['back' => $safeBackForLinks]); - } + $allUrl = \App\Support\BackUrl::withBack('/admin/platform-orders', $safeBackForLinks); @endphp