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.