FuelPHPによるMVCプログラミング入門

Paginationクラスでページ分割

全334コースを10日間無料で

ぜひご覧ください。

無料で視聴する すべての加入プランを見る
または
Paginationクラスを利用すれば、大量のデータを一覧に表示する際のページ分割を実装することができます。ここでは、Scaffoldで作成した一覧画面にページ分割を実装する方法を紹介しましょう。
講師:
10:55

字幕

ここでは、pagination クラスでページ分割としまして、例えば今、画面に表示されているような一覧画面で何件もデータが入っている場合にこの様に一気に全てを表示するのではなくて例えば、5件ごとですとか、10 件ごとという様なかたちで1ページに表示する件数を制限し、「次のページ」「前のページ」というようなかたちでページ遷移で一覧を見せるというテクニックを紹介していきたいと思います。今、この画面はスキャフォールドという機能を使って作った一覧画面になっています。このスキャフォールドというのを使うと、非常に簡単に一覧画面が作れるのですが、残念ながら、こちらのページ分割という機能は搭載されていませんので、手で搭載していく必要があります。では、こちらのプロジェクトを紹介していきます。今回 lesson07-01 というフォルダにFuelPHP をセットアップし、fuel の app のconfig の db.php のところでデータベースを有効にしています。MAMP の mysql の情報を書き込んでfuelphp に接続するように設定しました。その fuelphp というデータベースのスペースですが、この様なかたちになっています。 items と migration というテーブルが出来ているのですが、これらは、それぞれ oil のコマンドを使って実装されたものです。では oil のコマンドを見ていきましょう。oil はこの様なかたちで実行しました。scaffold itemこちらで item というモデルとitems というテーブルが出来上がります。そのテーブルにはitem_name というフィールドがあり、varchar の 500 で実装されますという意味です。この oil コマンドを実行すると、この様に controller や view などがそれぞれ出来上がりまして、テーブルとしても、この様にitems ということでitem_name フィールドがあるテーブルが出来上がりました。では、ファイル群を見ていきましょう。出来上がったものは controller のitem.phpそれから model の item.phpそして、こちら app の views の中のtemplate.php とitem の中にcreate.php(制作画面)ですね、edit.php(編集画面)、そして index.php(一覧画面)と、view.php(表示画面)それぞれのファイル。 そして、create.php と edit.php の両方から使われるパーツファイルとして_form.php というファイルが出来上がっています。では、このプロジェクトを編集して、実際のスクリプトを組んでいきましょう。ここでページネーションの機能を実装するためには、app の classescontroller のこちら item.php を開きます。そして、こちらの action_index という所が一覧画面を司っている場所なんですが、この中で今 Model_Item の find がall になっています。これは、データベースから全件のデータを取得するというメソッドになっているので、このままですと、ページネーションができません。そこで、これを少し改良していきます。ここでは、こちらに limit ということで5 と指定します。そして、 get とメソッドを指定することで、これによって5件のデータだけを取得するという様な命令になります。では、こちらで実際に動きを確認してみましょう。まず MAMP で、こちらのドキュメントルートが07-01 になっていることを確認して再起動したら、一覧画面を改めて表示します。 すると、この様に1、2、3、4、5と5件にリミットがかかりました。例えば、こちらを 3 に変更すれば、この様に3件に指定することもできます。そして続いて、オフセットというものも指定していきましょう。offset に例えば 3 などと指定すると、これは今、「みかん」「あ」「い」となっていますが、次に「う」「え」「お」から表示されます。つまり、今表示されていた「みかん」「あ」「い」の3件のデータは offset (読み飛ばす)という設定になるわけです。この limit と offset を上手く活用すればページネーションを実現することができるんですけども自分でこれを実装しようとすると、limit は決めることができますが、offset が「今、何ページ目が表示されているのか」といったことを判断しながら、ここの数字を変化させていかなければなりません。更に、ここにページ数の表示や、「前へ」「次へ」のリンク、そして、「前へ」リンクがクリックできるべきなのかどうか、「次へ」リンクがクリックできるページ数なのかどうか、という様なことを自分で判断しなければいけません。そこで便利なのがpagination というクラスです。 実際に使っていきましょう。まず、ページネーションというのはこの様に pagination と書きます。そして、ここに set_config としまして、コンフィグ、つまり設定の内容をここに書き込んでいくわけなんですが、ここには配列を指定しなければいけませんので、先に、こちらで config として、配列を定義しておきたいと思います。そして、まずここに定義するのはページネーションの URLこれは例えば、「次のページ」「前のページ」などが指定された時のURL の元となるものです。ここでは、コントローラーの名前としてはitemアクションの名前としては今、省略されていますがindex になります。なので、こちらをこの様に、指定していきましょう。そして per_page としまして、これは1ページに表示する件数を設定します。ここでは5件と設定しましょう。そして、続いてなんですが、total_items ということで、全部で何件あるのかを設定しなければはなりません。例えば、今、こちらの画面では、件数が ...こちらのデータベースを見れば分かりますけれども、こちらで 12 件ということですね。total_items という全てのデータ件数が何件なのかということを設定しなければならないんですが、例えば、ここでは今は、このデータベースに何件入っているかというのは数えることができるので、数字を指定することができます。 ただ、データが増えていく度にここの数字を書き換えなければならないということでは、スクリプトを組んでいる意味があまりありませんので、ここではデータの件数が何件あるかというのをスクリプトで求めていきたいと思います。では、ここでは count としまして、Model_Item のfind の count とします。これによって、データの件数を取得することができますので、こちらを、この total_items に設定するようにしましょう。これでコンフィグは完成です。そのため、こちらの set_config の中にconfig を設定していきます。これでまず、ページネーションが出来上がりました。続いて、このページネーションの機能を使ってこちらの limit や offset を自動的に計算するようにします。まず limit の中ですが、Pagination::$per_page というプロパティを使うことで、自動的に取得することができます。続いて offset の方は、Pagination::$offset というプロパティで取得することができます。では、まず一度、こちらで確認してみましょう。同じページを再度表示すると、この様に1、2、3、4、5と、5件に制限されています。 例えば、この per_page を3 に設定すればこの様に、3件に絞り込まれました。ただ、今の段階では、まだここに「次へ」「前へ」のリンクがありませんので、実際のページ分割を試すことができません。そのページ分割のリンクを表示するには、今度はビューを編集していきます。では、こちら views の中のitem の index.phpこちらを編集していきましょう。こちら、ビューのファイルを見ていきますと、こちらに、まず最初に if ($items) とあります。これはアイテムのデータが有るか無いかを判断している所なんですが、それによって、こちら table が生成されています。そして、その後 else の後で、アイテムが無い場合の記述がされていますということです。そこで必要なのは、この else よりも上の所にページネーションのリンクが必要になりますので、この様に echo として、Pagination::create_links と指定しましょう。これでリンクが作られます。では、実際に確認してみましょう。この様に再読み込みをすると、こちら、ページネーションが作られています。今 Previous ということで前のページ、Next ということで、次のページというかたちでリンクが張られています。 この様に、リンクをたどったり、この様に、直接ページ数を指定するということもできます。では、こちらで、いくつかデータを増やしてみましょう。ここまで増やしますと、ページ数が4ページに増えています。4 をクリックすると、この様に、今、記入した「そ」というデータが記入されているというわけです。この様に、ページネーションという機能を使えば非常に簡単にページ分割が実装できます。この見た目なども stylesheets などで整えることができますので、是非、自分なりのページ分割を作ってみると良いでしょう。

FuelPHPによるMVCプログラミング入門

このコースでは、PHPのフレームワークのひとつであるFuelPHPを紹介していきます。フレームワークとはスクリプト開発における「足場」となるもので、近年のスクリプト開発においては非常に一般的な存在となっています。高速な開発スタイルをぜひとも身に付けていきましょう。

6時間19分 (47 ビデオ)
現在、カスタマーレビューはありません…
 
ソフトウェア・トピック
価格: 3,990
発売日:2014年01月12日

このコースは、「オンデマンド」でご利用可能であり、ダウンロードすることもオンラインで見ることもできます。

ダウンロードすると、オフラインでコースを使用し、豊富なインターフェースをフルに活用できます。複数のデバイスを使用したり、 一度に全コースをダウンロードしたくない場合は、アカントにログインして、ストリーミング・ビデオとしてコースのレッスンを視聴してください。

ビデオトレーニングをお楽しみいただけますように! お問い合わせは、cs-jp@lynda.com宛までご連絡ください。