質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.30%
Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

Q&A

解決済

2回答

783閲覧

laravelの複数のpaginationがあるときのurlの順番の統一

jahstaway

総合スコア3

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

0グッド

0クリップ

投稿2022/12/15 04:33

編集2022/12/15 04:47

前提

laravelのページネーション、
ひとつのページに二つのページネーションA,Bがあります。
appendsメソッドを使い、それぞれのページネーションのページ番号を取得してページを保持しています。

Aのページネーションをクリックすると ?B=3&A=2
Bのページネーションをクリックすると ?A=2&B=3

のurlになるのを ?A=2&B=3 に統一したいです。

実現したいこと

  • urlの順番の統一

該当のソースコード

php

1//controller 2$A = DB::table('users')->paginate(15, ['*'], A) 3->appends(["B" => $request->input('B')]); 4$B = DB::table('users')->paginate(15, ['*'], B) 5->appends(["A" => $request->input('A')]); 6return view('dir.file', compact('A','B')); 7 8//view 9{{ $A->links() }} 10{{ $B->links() }}

補足情報(FW/ツールのバージョンなど)

Laravel Framework 8.83.5

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

Laravel内部にはそんな何の意味もないことを想定した箇所はなかったのでページネーションのviewを自分でカスタマイズするしかなさそう。

php artisan vendor:publish --tag=laravel-pagination

tailwindのままならresources/views/vendor/pagination/tailwind.blade.phpを変更。

$urlに最終的なhttps://localhost/post?B=3&A=2が入っているので
parse_url()とparse_str()で$urlを作り直す。
https://www.php.net/manual/ja/function.parse-url.php
https://www.php.net/manual/ja/function.parse-str.php

php

1@else 2 3@php 4$parse_url = parse_url($url); 5parse_str($parse_url['query'], $query); //$queryは['B' => 3, 'A' => 2]な配列 6ksort($query); //keyでソート 7$url = url($parse_url['path'], $query); //url('/post', ['A' => 2, 'B' => 3]) 面倒なのでLaravelのurl()を使っているけど$parse_urlから全部組み立ててもいい。 8@endphp 9 10<a href="{{ $url }}"

投稿2022/12/15 13:13

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

jsで処理してはだめでしょうか?

javascript

1window.addEventListener('DOMContentLoaded',()=>{ 2 document.querySelectorAll('[href*="?"]').forEach(x=>{ 3 const base=x.getAttribute('href').replace(/\?.*/,''); 4 const usp=new URLSearchParams(x.search); 5 usp.sort(); 6 const href=base+'?'+usp.toString(); 7 x.setAttribute('href',href); 8 }); 9});

投稿2022/12/15 05:39

yambejp

総合スコア117767

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jahstaway

2022/12/15 06:06

jsでできるんですね! わからない箇所が多いので調べつつ書いてみます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.30%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問