Laravel 4’ün mükemmel bir sayfalama (pagination) özelliği var. Bu pagination default olarak Bootstrap 2 destekli. Yani siz bu özelliği kullanıp sayfa numaralarını ekrana bastığınız zaman, uygulamanız Bootstrap 2 uyumlu ise hiç bir sıkıntı yaşamıyorsunuz. Amma ve lakin, zurb murb kullanıyorsanız olmaz 🙁
Çözüm
Bu özelliği Laravel’e ben ekledim ve henüz Laravel dökümanında yok. Yani bu kıyağımı unutmayın. :p Kısa bir süre sonra Laravel dökümanına da ekleyeceğim.
Adım 1
Öncelikle app/views
klasörü altına bir view dosyası yaratacağız. Bunun adı sayfalama.php
olsun.
Adım 2
Sonra app/config/view.php
içindeki pagination
ayarını değiştiriyorum ve buraya view’imin ismini yazıyorum.
'pagination' => 'sayfalama'
Adım 3
Sonra bu sayfalama.php
içine özel pagination görüntü sınıfı yaratacağız. Mesela Zurb Foundation için yapalım mı ?
<?php
class ZurbPresenter extends Illuminate\Pagination\Presenter {
// aktif sayfa html'i
public function getActivePageWrapper($text)
{
return '<li class="current">' . $text . '</li>';
}
// tıklanamayan metin html'i (ilk sayfada ise geriye gitme buttonu gibi)
public function getDisabledTextWrapper($text)
{
return '<li class="unavailable">' . $text . '</li>';
}
// sayfa linki html'i
public function getPageLinkWrapper($url, $page)
{
return '<li><a href="' . $url . '">' . $page . '</a></li>';
}
}
Bu bizim yeni görüntü yaratan sınıfımız. Yani Illuminate\Pagination\Presenter
altındaki abstract methodları implement ediyoruz. Daha sonra sayfalama.php
dosyasına şöyle devam ediyoruz;
$presenter = new ZurbPresenter($paginator);
?>
<ul class="pagination">
<?php echo $presenter->render(); ?>
</ul>
İşte bu kadar basit
Sonuç
Yani Zurb foundation için sayfalama.php
içine şunları yazıyoruz;
<?php
class ZurbPresenter extends Illuminate\Pagination\Presenter {
public function getActivePageWrapper($text)
{
return '<li class="current">' . $text . '</li>';
}
public function getDisabledTextWrapper($text)
{
return '<li class="unavailable">' . $text . '</li>';
}
public function getPageLinkWrapper($url, $page)
{
return '<li><a href="' . $url . '">' . $page . '</a></li>';
}
}
$presenter = new ZurbPresenter($paginator);
?>
<ul class="pagination">
<?php echo $presenter->render(); ?>
</ul>
In Laravel 5.3 and above a new pagination method was introduced. Laravel paginate method has made it really easy to implement pagination in Laravel based websites.