Diyelimki bir web sitesi yapıyoruz ve blog bölümünün olduğunu ve bunları listelediğimizi düşünelim. Çok fazla yazımız olduğunu düşünürsek bunların hepsini aynı anda basmaya kalktığımızda hem yüklenmesinden dolayı bir geçikme yaratacak hemde sayfa boyumuzun çok fazla olmasına neden olacak. Bunu önlemek adına verilerimizi sayfalamaya ve belli bir kısmını gösteririz. Laravel bizlere hazır olarak bir sayfalama sunmaktadıır. Biz de bu yazıda hazır sayfalamayı özelleştireceğiz.
Öncelikle controller dosyasında verilerimizi nasıl aldığımıza bakalaım.
1 2 | $blogs = Blog::orderBy('updated_at','desc')->paginate(10); // Elequent ORM ile blogs tablomuzdan verilerimizi 10'lı olarak getiriyoruz |
Sonra blog verilerimizi listeleyeceğimiz blade dosyasında gidiyoruz
1 2 3 4 5 6 7 8 | @if( $blogs ->count() > 0) @foreach($blogs as $blog) <ul> ... </ul> @endforeach {!! $blogs->links('particular.paginate') !!} @endif |
Burada sayfalama işlemini yaptığımı bölüm links ile sayfa başına 10 kayıt aldığımız kısımdır. Buarada sayfalamayı özelleştiemeyi particular.paginate içinde blade dosyasında yapıyoruz. Şimdi paginate view dosyasına bakalım.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 | <!-- Pagination --> <div class="clearfix"></div> <div class="row"> <div class="col-md-12"> <!-- Pagination --> <div class="pagination-container margin-bottom-40"> <nav class="pagination"> @if ($paginator->hasPages()) <ul> {{-- Previous Page Link --}} @if ($paginator->onFirstPage()) <li class="disabled"><i class="sl sl-icon-arrow-left"></i></li> @else <li><a href="{{ $paginator->previousPageUrl() }}" rel="prev"><i class="sl sl-icon-arrow-left"></i></a></li> @endif {{-- Pagination Elements --}} @foreach ($elements as $element) {{-- "Three Dots" Separator --}} @if (is_string($element)) <li class="current-page">{{ $element }}</li> @endif {{-- Array Of Links --}} @if (is_array($element)) @foreach ($element as $page => $url) @if ($page == $paginator->currentPage()) <li><a class="current-page">{{ $page }}</a></li> @else <li class="current-page"><a href="{{ $url }}">{{ $page }}</a></li> @endif @endforeach @endif @endforeach {{-- Next Page Link --}} @if ($paginator->hasMorePages()) <li> <a href="{{ $paginator->nextPageUrl() }}" rel="next"> <i class="sl sl-icon-arrow-right"></i> </a> </li> @else <li> <i class="sl sl-icon-arrow-right"></i> </li> @endif </ul> @endif </nav> </div> </div> </div> <!-- Pagination / End --> |
paginate.blade.php dosyasını incelediğimizde sayfalama işlemenini $paginator sayesinde gerçekleştiriyoruz.Daha detaylıı bilgi ve kullanabileceğiniz diğer fonksiyonlar için Laravel’in dökümantasyon sayfasına bakabilirsiniz.
Kolay gelsin , iyi çalışamlar.