Skip to content

fix: ページネーション遷移で検索キーワード等が引き継がれない不具合を修正 - #189

Merged
128na merged 1 commit into
masterfrom
worktree-fix-search-condition-lost-on-pagination
Aug 16, 2026
Merged

fix: ページネーション遷移で検索キーワード等が引き継がれない不具合を修正#189
128na merged 1 commit into
masterfrom
worktree-fix-search-condition-lost-on-pagination

Conversation

@128na

@128na 128na commented Aug 16, 2026

Copy link
Copy Markdown
Owner

Summary

$keyword/$paks/$sites#[Url] 化されておらず、ページネーションリンク(プレーンな <a href> によるURL遷移)にも検索条件が乗っていなかったため、2ページ目以降に遷移すると検索条件がリセットされた状態でコンポーネントが再マウントされていました(#187/#188のセルフレビューで発見していた既知の制限です)。

  • $keyword/$paks/$sites#[Url] を追加し、フルページ遷移後もURLから状態を復元できるようにしました。
  • pages() が返すpaginatorに ->appends([...]) で現在の検索条件を明示的に付与し、生成されるページネーションリンクに検索条件が引き継がれるようにしました。withQueryString() はLivewireのAJAXリクエスト中は request()->query()(アドレスバーではなくAJAXエンドポイント自体のクエリ文字列)を参照してしまい正しく機能しないため、コンポーネントのプロパティから直接構築する方式にしています。
  • 回帰テストを追加(ページネーションリンクに keyword/paks が実際に含まれることを確認)。

なお既存テストの正規表現がクエリパラメータの並び順・エスケープ形式(&ではなくBladeでエスケープされた&amp;)に依存していたため、より頑健な形に修正しています。

Test plan

  • ./vendor/bin/pint --test
  • ./vendor/bin/phpstan analyse(全体、エラーなし)
  • ./vendor/bin/rector process --dry-run(提案なし)
  • php artisan test(66件全て通過。新規回帰テストで、2ページ目リンクに keyword=Locomotivepaks%5B64%5D=0 が実際に含まれることを確認)

🤖 Generated with Claude Code

`$keyword`/`$paks`/`$sites`が`#[Url]`化されておらず、ページネーションリンク
(プレーンな`<a href>`によるURL遷移)にも検索条件が乗っていなかったため、
2ページ目以降に遷移すると検索条件がリセットされた状態でコンポーネントが
再マウントされていた(#187/#188のセルフレビューで発見していた既知の制限)。

- `$keyword`/`$paks`/`$sites`に`#[Url]`を追加し、フルページ遷移後も
  URLから状態を復元できるようにした
- `pages()`が返すpaginatorに`->appends([...])`で現在の検索条件を明示的に
  付与し、生成されるページネーションリンクに検索条件が引き継がれるように
  した。`withQueryString()`はLivewireのAJAXリクエスト中は
  `request()->query()`(アドレスバーではなくAJAXエンドポイント自体の
  クエリ文字列)を参照してしまい正しく機能しないため、コンポーネントの
  プロパティから直接構築する方式にした
- 回帰テストを追加(ページネーションリンクにkeyword/paksが実際に
  含まれることを確認)

なお既存テストの正規表現がクエリパラメータの並び順・エスケープ形式
(`&`ではなくBladeでエスケープされた`&amp;`)に依存していたため、
より頑健な形に合わせて修正した。
@128na

128na commented Aug 16, 2026

Copy link
Copy Markdown
Owner Author

セルフレビュー実施。

確認した内容

  • #[Url]の内部実装(BaseUrl::dehydrate())を確認したところ、URLへの自動反映はマウント時のみ発火する作りだった。ただし本修正の要はpages()内の->appends()でコンポーネントの現在値($this->keyword等)から直接ページネーションリンクを構築している点にあり、これはマウント有無に関係なく常に正しい値を反映する。実際に生成されたHTMLを確認し、2ページ目リンクにkeyword=Locomotivepaks%5B64%5D=0が正しく含まれることを実証済み。
  • ユーザーがそのリンクをクリックした先(フルページ遷移)では#[Url]のマウント時ハイドレーションが機能し、URLから検索条件を正しく復元する(既存のpageと同じ仕組みで、これは#187で既に動作確認済みのパス)。
  • #[Validate]#[Url]をkeywordに併記しても、既存のバリデーションテストが通ることを確認。

指摘事項なし。

@128na
128na merged commit 2462775 into master Aug 16, 2026
5 checks passed
@128na
128na deleted the worktree-fix-search-condition-lost-on-pagination branch August 16, 2026 14:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant