Ada salah seorang teman saya menanyakan bagaimana cara membuat paging pada hasil query pada silverstripe?
Memang untuk menampilkan hasil query ada kalanya kita harus membuat hasilnya dibatasi per halaman. Paging adalah istilah yang digunakan untuk mengatur banyaknya hasil query yang ditampilkan per halaman. Jika tidak menggunakan paging maka seluruh hasil query akan ditampilkan pada satu halaman dan hal ini tidak wajar jika diimplementasikan pada website. Mungkin bisa anda bayangkan jika google.com menampilkan hasil pencariannya tidak dalam bentuk paging, maka kita harus melakukan scrolling untuk mencari hasil pencariannya.
Pada Silverstripe sebenarnya fasilitas paging sudah disediakan oleh objek DataObjectSet. Objek ini digunakan untuk menyimpan kumpulan DataObject, baik itu merupakan hasil query ataupun tidak. DataObject ini merupakan Class yang merepresentasikan Basis Data di Silverstripe. Untuk DataObject sendiri mungkin anda bisa membaca cara penggunaannya di http://doc.silverstripe.org/doku.php?id=dataobject.
Membuat Paging pada silverstripe sebenarnya gampang sekali. Kita tinggal menggunakan Class DataObjectSet pada fungsi query kita. Misalkan kita membuat sebuah fungsi ArticlePageList yang isinya menampilkan Daftar dari halaman bertipe ArticlePage yang akan kita batasi 10 per halaman, kodenya sebagai berikut:
public function ArticlePageList($limit=10){
$start = isset($_GET['start']) ? (int) $_GET['start'] : 0;
$list = DataObject::get("ArticlePage", "", "","","$start , $limit");
return $list;
}
Pada fungsi tersebut terdapat sebuah variabel output $list yang merupakan DataObjectSet output dari static method DataObject:get. Pada fungsi tersebut juga kita menentukan jumlah limit dari hasil query. Nanti pada template kita bisa membuat kode sebagai berikut untuk menampilkannya:
<ul>
<% control ArticlePageList %>
<li><a href="$Link">$Title</a><p>$Content.Summary(50)</p></li>
<% end_control %>
</ul>
Hasilnya nanti akan ditampilkan daftar list dari halaman bertipe ArticlePage sejumlah 10 per halaman.
Untuk membuat paging-nya, kita tinggal menggunakan method yang sudah disediakan oleh DataObjectSet. Method yang dapat kita gunakan untuk paging adalah sebagai berikut:
- MoreThanOnePage(), method ini digunakan untuk mengetahui apakah output dari hasil query lebih dari satu halaman atau tidak.
- NextLink(), method ini digunakan untuk mendapatkan URL untuk halaman berikutnya.
- NotFirstPage(), method ini digunakan untuk memberikan informasi bahwa hasil query yang ditampilkan bukan pada halaman pertama.
- NotLastPage(), method ini digunakan untuk memberikan informasi bahwa hasil query yang ditampilkan bukan pada halaman terakhir.
- PrevLink(), method ini digunakan untuk mendapatkan URL untuk halaman sebelumnya
Cara penggunaan method-method tersebut dapat langsung diimplementasikan pada template silverstripe seperti dibawah ini:
<% if LatestChild.NotFirstPage %>
<a class="prev" href="$LatestChild.PrevLink">« Sebelumnya</a>
<% end_if %>
<% if LatestChild.NotLastPage %>
<a class="next" href="$LatestChild.NextLink">Berikutnya »</a>
<% end_if %>
Pada potongan template tersebut nantinya akan ditampilkan link ke halaman sebelumnya dan halaman berikutnya. Begitu kira-kira, cukup mudah bukan?


08 Juli 2010
I will recommend not to hold back until you get big sum of cash to buy all you need! You should get the home loans or just college loan and feel yourself fine
16 Juli 2010
That is known that the perfect buy essays service will be able to provide students with expository essay. Moreover, students will be able to save free time.
24 Juli 2010
Such good dissertation writing service about this good post is the thing that all people should purchase at the research paper writing services, but some times they would like to get the thesis service or written essays.
31 Juli 2010
Better grades are just click away and you have to order course work writing and succeed.
02 September 2010
We opine, you should use the article submission for your facts referring to this good post, because that seems to be really top and hasn’t to be hidden from people!