Laravel 4 Pagination HTMLi Özelleştirme

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>

Leave a Reply

Your email address will not be published. Required fields are marked *

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax