はじめに
Laravelでページネーションを実装する readouble.com
前回作成した問い合わせフォームの一覧画面をページネーションさせる
- seederで作成したテストデータを利用する px-wing.hatenablog.com
コントローラー側の処理
- getメソッドをpaginateメソッドに変更するだけ。
public function index() { // ページネーションなし $contacts = DB::table('contact_forms')->select('id','name','subject','created_at')->get(); // ページネーションあり $contacts = DB::table('contact_forms')->select('id','name','subject','created_at')->paginate(20); return view('contact.index', compact('contacts')); }
View側の実装
- 下記の記述を追加するだけで実装できるのがすごいが自分の環境ではレイアウトが崩れてしまう。
{{ $contacts->links() }}
実際のイメージ
対処方法
<nav aria-label="Page navigation example"> <ul class="pagination"> <li class="page-item"><a class="page-link" href="{{ $contacts->previousPageUrl() }}">Previous</a></li> <li class="page-item"><a class="page-link" href="{{ $contacts->getOptions()["path"] }}?{{ $contacts->getOptions()["pageName"] }}=1">1</a></li> <li class="page-item"><a class="page-link" href="{{ $contacts->getOptions()["path"] }}?{{ $contacts->getOptions()["pageName"] }}=2">2</a></li> <li class="page-item"><a class="page-link" href="{{ $contacts->getOptions()["path"] }}?{{ $contacts->getOptions()["pageName"] }}=3">3</a></li> <li class="page-item"><a class="page-link" href="{{ $contacts->nextPageUrl() }}">Next</a></li> </ul> </nav>
- いろいろな機能が用意されているので自分で実装することもできる。