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

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

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

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

ページネーション

Webアプリケーションにおいて、1ページに収まらないコンテンツを、各ページへのリンクを並べてアクセスしやすくする手法をページネーションと呼びます。

Q&A

解決済

2回答

1719閲覧

Laravel5.8ページネーションの微調整をしたい

paranoaman1217

総合スコア24

Laravel

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

ページネーション

Webアプリケーションにおいて、1ページに収まらないコンテンツを、各ページへのリンクを並べてアクセスしやすくする手法をページネーションと呼びます。

0グッド

0クリップ

投稿2020/07/15 09:05

編集2020/07/15 10:16

お世話になっております。
現在Laravel5.8にてWebアプリケーションを運用しております。
そのサービス内で品物一覧ページがあり、よくある絞り込み検索とページングを行なっています。
このページングがLaravelで用意されているデフォルトのページングを使っていて、表示件数を調整したいと考えています。
getのパラメータを引き継ぎたいので以下のような形で表示させております。

php

1{{ $items->onEachSide(1)->appends($request->toArray())->links() }}

上記で以下のように表示されます。
全18ページあるとして、

←|1|2|...|3|4|5|...|17|18|→
このように最大11列になり表示件数を減らしたいです。

onEachSide(0)とすると、、
←|1|2|...|4|...|17|18|→
非常に使い勝手が悪く、、

やりたい形は、
←|1|...|3|4|5|...|18|→

このようにfirstとlastのページ番号のみにしたいと考えております。
実現するにはどうしたら良いでしょうか?

resources/views/vendor/pagination/bootstrap-4.blade.php
現在このテンプレートを仕様していて、
この中の、

php

1@if (is_array($element)) 2 @foreach ($element as $page => $url) 3 @if ($page == $paginator->currentPage()) 4 <li class="page-item active" aria-current="page"><span class="page-link">{{ $page }}</span></li> 5 @else 6 <li class="page-item"><a class="page-link" href="{{ $url }}">{{ $page }}</a></li> 7 @endif 8 @endforeach 9@endif

elseの部分なのは分かったんですがOverrideする必要があるのかなと思っています。

よき方法ございましたらご教示いただけますと幸いです。
何卒よろしくお願いいたします。

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

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

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

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

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

guest

回答2

0

自己解決

想定している形ではなかったんですが逆に良い形になったかなと思います。
コードを控えておきます。

php

1 2@if ($paginator->hasPages()) 3 <div class="pager"> 4 <ul class="pagination" role="navigation"> 5 {{-- Previous Page Link --}} 6 @if ($paginator->onFirstPage()) 7 <li class="page-item disabled" aria-disabled="true" aria-label="@lang('pagination.previous')"> 8 <span class="page-link" aria-hidden="true">&lsaquo;</span> 9 </li> 10 @else 11 <li class="page-item"> 12 <a class="page-link" href="{{ $paginator->previousPageUrl() }}" rel="prev" aria-label="@lang('pagination.previous')">&lsaquo;</a> 13 </li> 14 @endif 15 16 @if($paginator->currentPage() > 3) 17 <li class="page-item"><a class="page-link" href="{{ $paginator->url(1) }}">1</a></li> 18 @endif 19 @if($paginator->currentPage() > 4) 20 <li class="page-item disabled"><span class="page-link">...</span></li> 21 @endif 22 @foreach(range(1, $paginator->lastPage()) as $i) 23 @if($i >= $paginator->currentPage() - 2 && $i <= $paginator->currentPage() + 2) 24 @if ($i == $paginator->currentPage()) 25 <li class="page-item active"><span class="page-link">{{ $i }}</span></li> 26 @else 27 <li><a class="page-link" href="{{ $paginator->url($i) }}">{{ $i }}</a></li> 28 @endif 29 @endif 30 @endforeach 31 @if($paginator->currentPage() < $paginator->lastPage() - 3) 32 <li class="page-item disabled"><span class="page-link">...</span></li> 33 @endif 34 @if($paginator->currentPage() < $paginator->lastPage() - 2) 35 <li class="page-item"><a class="page-link" href="{{ $paginator->url($paginator->lastPage()) }}">{{ $paginator->lastPage() }}</a></li> 36 @endif 37 38 {{-- Next Page Link --}} 39 @if ($paginator->hasMorePages()) 40 <li class="page-item"> 41 <a class="page-link" href="{{ $paginator->nextPageUrl() }}" rel="next" aria-label="@lang('pagination.next')">&rsaquo;</a> 42 </li> 43 @else 44 <li class="page-item disabled" aria-disabled="true" aria-label="@lang('pagination.next')"> 45 <span class="page-link" aria-hidden="true">&rsaquo;</span> 46 </li> 47 @endif 48 </ul> 49 </div> 50@endif 51

投稿2020/07/28 10:14

paranoaman1217

総合スコア24

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

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

0

以下のコマンドを実行し、

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

/resources/views/vendor/pagination ディレクトリに出力されたファイルを編集してカスタマイズしてください。

laravel-debugbar で確認すればどのテンプレート使っているかすぐに分かりますよね。

投稿2020/07/15 09:53

phper.k

総合スコア3923

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

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

paranoaman1217

2020/07/15 10:18

ご回答いただきありがとうございます! 本文に追記いたしました。
phper.k

2020/07/15 11:17 編集

何がわからないのですか? Override とか関係なくて、普通にHTMLを編集すればいいだけですけど。 https://readouble.com/laravel/5.8/ja/pagination.html このページの一番下にページネーションの関数があるので、それを使って書けばいいだけです
paranoaman1217

2020/07/28 10:12

ご回答いただきありがとうございました。 大変参考になりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問