フリーランス 技術調査ブログ

フリーランス/エンジニア Ruby Python Nodejs Vuejs React Dockerなどの調査技術調査の備忘録

Laravel ページネーション

はじめに

  • Laravelでページネーションを実装する readouble.com

  • 前回作成した問い合わせフォームの一覧画面をページネーションさせる

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() }}

実際のイメージ

f:id:PX-WING:20201026005052p:plain

対処方法

                            <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>
  • いろいろな機能が用意されているので自分で実装することもできる。 f:id:PX-WING:20201026005501p:plain