diff --git a/app/Support/BackUrl.php b/app/Support/BackUrl.php index feccdff..cd8a738 100644 --- a/app/Support/BackUrl.php +++ b/app/Support/BackUrl.php @@ -133,4 +133,21 @@ class BackUrl return $path . '?' . \Illuminate\Support\Arr::query($q); } + + /** + * 生成当前页面去掉 back 后的 selfWithoutBack(站内相对路径)。 + * 用于:生成返回来源 back 或防止 back 嵌套膨胀。 + */ + public static function selfWithoutBack(): string + { + $currentQuery = request()->query(); + unset($currentQuery['back']); + + $url = '/' . ltrim(request()->path(), '/'); + if (count($currentQuery) > 0) { + $url .= '?' . \Illuminate\Support\Arr::query($currentQuery); + } + + return $url; + } } diff --git a/resources/views/admin/plans/index.blade.php b/resources/views/admin/plans/index.blade.php index e4b08a9..63c029d 100644 --- a/resources/views/admin/plans/index.blade.php +++ b/resources/views/admin/plans/index.blade.php @@ -6,12 +6,7 @@ @section('content') @php // back 参数用于“返回上一页(保留上下文)”,但 back 本身不应再包含 back(避免无限嵌套导致 URL 膨胀) - $currentQuery = request()->query(); - unset($currentQuery['back']); - $selfWithoutBack = '/' . ltrim(request()->path(), '/'); - if (count($currentQuery) > 0) { - $selfWithoutBack .= '?' . \Illuminate\Support\Arr::query($currentQuery); - } + $selfWithoutBack = \App\Support\BackUrl::selfWithoutBack(); // 用于构建“从套餐页跳转到订阅/订单页后可返回套餐页”的链接 $makeSubscriptionUrl = function (array $query) use ($selfWithoutBack) { diff --git a/resources/views/admin/platform_leads/index.blade.php b/resources/views/admin/platform_leads/index.blade.php index f6facd2..6d93e7f 100644 --- a/resources/views/admin/platform_leads/index.blade.php +++ b/resources/views/admin/platform_leads/index.blade.php @@ -17,12 +17,7 @@ : ''; // back 参数用于“返回上一页(保留上下文)”,但 back 本身不应再包含 back(避免无限嵌套导致 URL 膨胀) - $currentQuery = request()->query(); - unset($currentQuery['back']); - $selfWithoutBack = '/' . ltrim(request()->path(), '/'); - if (count($currentQuery) > 0) { - $selfWithoutBack .= '?' . \Illuminate\Support\Arr::query($currentQuery); - } + $selfWithoutBack = \App\Support\BackUrl::selfWithoutBack(); // 从线索直达“创建平台订单”入口:预填 plan_id/remark,并带 back 回到当前线索列表(保留筛选) // 备注:如果线索 meta 中包含 merchant_id,也会一并预填(用于“已存在站点,但需补单/续费”的场景) diff --git a/resources/views/admin/platform_orders/index.blade.php b/resources/views/admin/platform_orders/index.blade.php index 0c69493..036db58 100644 --- a/resources/views/admin/platform_orders/index.blade.php +++ b/resources/views/admin/platform_orders/index.blade.php @@ -10,12 +10,10 @@ $SYNC_FAILED_REASON_TRUNCATE_LEN = (int) config('saasshop.platform_orders.sync_failed_reason_display_truncate_len', 60); // back 参数用于“返回上一页(保留上下文)”,但 back 本身不应再包含 back(避免无限嵌套导致 URL 膨胀) + $selfWithoutBack = \App\Support\BackUrl::selfWithoutBack(); + $currentQuery = request()->query(); unset($currentQuery['back']); - $selfWithoutBack = '/' . ltrim(request()->path(), '/'); - if (count($currentQuery) > 0) { - $selfWithoutBack .= '?' . \Illuminate\Support\Arr::query($currentQuery); - } // back 安全护栏(全页通用): // - 仅允许站内相对路径(/ 开头) diff --git a/resources/views/admin/site_subscriptions/index.blade.php b/resources/views/admin/site_subscriptions/index.blade.php index 28b9845..18e1024 100644 --- a/resources/views/admin/site_subscriptions/index.blade.php +++ b/resources/views/admin/site_subscriptions/index.blade.php @@ -7,12 +7,10 @@ @php // back 参数用于“返回上一页(保留上下文)”,但 back 本身不应再包含 back(避免无限嵌套导致 URL 膨胀) // 注意:使用相对路径而非绝对 URL,避免不同 APP_URL 环境影响,以及 show 页 back 安全校验(要求以 / 开头) + $selfWithoutBack = \App\Support\BackUrl::selfWithoutBack(); + $currentQuery = request()->query(); unset($currentQuery['back']); - $selfWithoutBack = '/' . ltrim(request()->path(), '/'); - if (count($currentQuery) > 0) { - $selfWithoutBack .= '?' . \Illuminate\Support\Arr::query($currentQuery); - } $back = $selfWithoutBack; // 用于构建“保留当前筛选上下文”的站内跳转链接(且不透传 back,避免嵌套/污染) diff --git a/resources/views/admin/site_subscriptions/show.blade.php b/resources/views/admin/site_subscriptions/show.blade.php index 598a0b6..4218f28 100644 --- a/resources/views/admin/site_subscriptions/show.blade.php +++ b/resources/views/admin/site_subscriptions/show.blade.php @@ -11,12 +11,7 @@ $platformOrdersBaseUrl = '/admin/platform-orders'; // back 参数用于“返回上一页(保留上下文)”,但 back 本身不应再包含 back(避免无限嵌套导致 URL 膨胀) - $currentQuery = request()->query(); - unset($currentQuery['back']); - $selfWithoutBack = '/' . ltrim(request()->path(), '/'); - if (count($currentQuery) > 0) { - $selfWithoutBack .= '?' . \Illuminate\Support\Arr::query($currentQuery); - } + $selfWithoutBack = \App\Support\BackUrl::selfWithoutBack(); $makePlatformOrderUrl = function (array $query) use ($platformOrdersBaseUrl, $selfWithoutBack) { // 若调用方显式传了 back,则不覆盖;否则默认回到当前订阅详情页(剔除 back,避免嵌套)