Laravel 5'de bir sayfada birden fazla pagination kullanmak

Laravel 5’de bir sayfada birden fazla pagination kullanmak

Bir sayfa üzerinde 2 tane bazen daha fazla pagination’a ihtiyacımız olabilir. Örnek vermek gerekirse sol menümüz de bir listeleme bulunuyor ve burada pagination kullandık. Aynı şekilde sayfanın orta kısmında da ürünleri listeliyoruz ve onda da pagination var. Eğer;

$products = Product::paginate(10);
$products->links();
 
$menuItems = Menu::paginate(10);
$menuItems->links();

şeklinde kullanırsak herhangi bir listelemeden 2. sayfaya tıkladığımız zaman her iki listeninde 2. sayfaları getirilir. Çünkü url kısmına baktığımızda ?page=2 olarak GET ile alınan page değeri her iki listelemenin sorgusunu etkilemektedir. Bunun önüne geçmek için her iki listeninde page numarası için kullanılacak GET değerine farklı bir değişken ismi vermemiz gerekiyor. Laravel’de bunu paginate() fonksiyonuna 3. değişken olarak belirtebiliyoruz. Bir örnekle konuyu daha detaylı inceleyelim.

Controller içinde;

$products = Product::paginate(10, ['*'], 'productPage');
$menuItems = Menu::paginate(10, ['*'], 'menuPage');

View (.blade) içinde;

{!! $products->links() !!}
{!! $menuItems->links() !!}

Anasayfa içinde ürünlerin altında yer alan sayfalamanın 2. sayfasına bastığımız zaman adres satırı;

laravel/public/home?productPage=2

Anasayfa içinde menünün altında yer alan sayfalamanın 2. sayfasına bastığımız zaman adres satırı;

laravel/public/home?menuPage=2

böylelikle GET ile alınan page değişkenleri farklı olduğu için ilgili listelemenin değerleri değişecektir.

Laravel'de adres satırındaki public satırını kaldırmak

Laravel’de adres satırındaki public satırını kaldırmak

Laravel ile kodlamaya başladığımda ilk düşündüğüm laravelin yapısının paylaşımlı sunucuya uygun olup olmadığıydı. Aslında uygun olması sorun değil ille uydurulacak bir kısmı vardır fakat benim için önemli olan kolay bir şekilde uydurmaktı. Laravelin bu kolay adapte edilmesi çok hoşuma gitti. Daha sonra Laravelin adres yapısında bulunan public kısmı çok canımı sıkmaya başladı. Birkaç araştırmadan sonra nasıl kurtulacağımın yolunu buldum. Hem ilerde kullanmak için hemde sizlerinde faydalanması için ilk blogumda sizinle paylaşmak istiyorum.
(more…)