From c75e7ad7d6436454a4def788ffcb6d9920eb80d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=90=9D=E5=8D=9C?= Date: Sun, 15 Mar 2026 04:33:45 +0000 Subject: [PATCH] =?UTF-8?q?=E5=B9=B3=E5=8F=B0=E8=AE=A2=E5=8D=95=E5=88=9B?= =?UTF-8?q?=E5=BB=BA=E9=A1=B5=EF=BC=9A=E5=8E=BB=E8=AE=A2=E9=98=85=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E9=80=89=E6=8B=A9=E8=AE=A2=E9=98=85=E7=9A=84=20back?= =?UTF-8?q?=20=E4=BF=9D=E6=8C=81=20require=5Fsubscription=3D1=20=E5=B9=B6?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/platform_orders/form.blade.php | 11 ++++- ...ckShouldIncludeRequireSubscriptionTest.php | 41 +++++++++++++++++++ 2 files changed, 51 insertions(+), 1 deletion(-) create mode 100644 tests/Feature/AdminPlatformOrderCreateRequireSubscriptionFlagJumpBackShouldIncludeRequireSubscriptionTest.php diff --git a/resources/views/admin/platform_orders/form.blade.php b/resources/views/admin/platform_orders/form.blade.php index 3a132cb..9310cc5 100644 --- a/resources/views/admin/platform_orders/form.blade.php +++ b/resources/views/admin/platform_orders/form.blade.php @@ -177,7 +177,16 @@ $jumpBase .= '?' . \Illuminate\Support\Arr::query($jumpQuery); } - $jumpUrl = \App\Support\BackUrl::withBack($jumpBase, \App\Support\BackUrl::selfWithoutBack()); + $createSelfForBack = \App\Support\BackUrl::selfWithoutBack(); + // 若 require_subscription 来自 old input(校验失败回填),当前 URL 可能不带 query, + // 此时也需要把 require_subscription=1 写回到 back,避免“去订阅管理选择订阅”回来后治理口径丢失。 + if (($requireSubscription ?? false) || ((string) old('require_subscription', '') === '1')) { + $createSelfForBack = \App\Support\BackUrl::currentPathWithQuery([ + 'require_subscription' => 1, + ], ''); + } + + $jumpUrl = \App\Support\BackUrl::withBack($jumpBase, $createSelfForBack); @endphp @if(($requireSubscription ?? false) && $jumpUrl) diff --git a/tests/Feature/AdminPlatformOrderCreateRequireSubscriptionFlagJumpBackShouldIncludeRequireSubscriptionTest.php b/tests/Feature/AdminPlatformOrderCreateRequireSubscriptionFlagJumpBackShouldIncludeRequireSubscriptionTest.php new file mode 100644 index 0000000..b56e297 --- /dev/null +++ b/tests/Feature/AdminPlatformOrderCreateRequireSubscriptionFlagJumpBackShouldIncludeRequireSubscriptionTest.php @@ -0,0 +1,41 @@ +seed(); + + $this->post('/admin/login', [ + 'email' => 'platform.admin@demo.local', + 'password' => 'Platform@123456', + ])->assertRedirect('/admin'); + } + + public function test_jump_to_subscriptions_link_should_carry_back_with_require_subscription_flag_when_no_query(): void + { + $this->loginAsPlatformAdmin(); + + // 模拟“校验失败回填后”回到 create 页:URL 不带 require_subscription query,但 old input 仍有 require_subscription=1 + // 通过 withSession 注入 old input + $res = $this->withSession([ + '_old_input' => [ + 'require_subscription' => '1', + ], + ])->get('/admin/platform-orders/create'); + + $res->assertOk(); + + // 关键:跳转订阅管理的链接应带 back,且 back 中应包含 require_subscription=1 + // 这样用户从订阅管理选中订阅再回来,治理口径不会丢。 + $res->assertSee('去订阅管理选择订阅', false); + $res->assertSee('back=%2Fadmin%2Fplatform-orders%2Fcreate%3Frequire_subscription%3D1', false); + } +}