İçeriğe geç

Laravel ile bir sayfada birden fazla Pagination link kullanımı

Last updated on 21 Aralık 2018

Laravel ile yaptığım bir projede bir view blade dosyasında birden fazla bağımsız sayfalandırma kullanmam gerekti. Burada blade dosyasında linkleri yazdırırken sadece {{ $model->links() }} kullanımında sayfa değişimlerinde tüm sayfalandırma alanları birlikte değişiyor. Çünkü tüm sayfalandırma linklerinde ?page=[sayfa_numarası] geçiyor. Bunun çözümü için paginate fonksiyonunda parametre var. Laravel API dokümantasyonunda paginate methodunda bunu görebiliriz.

Her data setinde paginate fonksiyonuna 3. parametre olarak sayfa numarası değişken ismini veriyoruz.

public function index() {
   $broadcasted = Ad::whereDate('expiry_at', '>=', Carbon::now())
                    ->paginate(10, ['*'], 'broadcasted');

   $oldAds      = Ad::whereDate('expiry_at', '<', Carbon::now())
                    ->paginate(10, ['*'], 'oldAds');

   return view('ad.list', compact('broadcasted', 'oldAds'));
}

Yukarıdaki şekilde sayfa linklerine tıkladığımızda istediğimiz data setinin sayfası değişecektir. Fakat sayfa değiştiği için diğer data setinde 1. sayfaya gözükecektir. Bunun çözümü için blade sayfamızda sayfalandırma linklerini aşağıdaki gibi yazmamız gerekir.

<!-- $broadcasted data seti sayfalandırma link -->
<div class="col-md-12">
    {{ $broadcasted->appends(['oldAds' => $oldAds->currentPage()])->links() }}
</div>

<!-- $oldAds data seti sayfalandırma link -->
<div class="col-md-12">
    {{ $oldAds->appends(['broadcasted' => $broadcasted->currentPage()])->links() }}
</div>

Özellikle sekmeli sayfalarda bu kullanım sayfalandırma işlemini kolaylaştıracaktır.

Kategori:LaravelPHP

İlk Yorumu Siz Yapın

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir


The reCAPTCHA verification period has expired. Please reload the page.