Pagination, büyük veri setlerini birden fazla sayfaya bölerek kullanıcıya sunma işlemidir. Örneğin, bir blog sitesinde yüzlerce gönderi varsa, bu gönderileri 10’ar 10’ar sayfalara bölerek kullanıcıya sunabilirsiniz. Bu, kullanıcı deneyimini iyileştirir ve performansı artırır.
Laravel’de pagination işlemleri oldukça kolaydır. Eloquent ORM, pagination için paginate
metodunu sunar. Örneğin, bir blog gönderisi listesini sayfalamak için:
namespace App\Http\Controllers; use App\Models\Post; use Illuminate\Http\Request; class PostController extends Controller { public function index() { $posts = Post::paginate(10); return view('posts.index', compact('posts')); } }
Bu kod, gönderileri 10’ar 10’ar sayfalara böler ve $posts
değişkeni ile Blade template’e gönderir.
Blade template’de pagination linklerini göstermek için links
metodunu kullanabilirsiniz. Örneğin:
<!-- posts/index.blade.php --> @foreach ($posts as $post) <div> <h2>{{ $post->title }}</h2> <p>{{ $post->excerpt }}</p> </div> @endforeach {{ $posts->links() }}
Bu kod, gönderi listesini ve pagination linklerini gösterir. Laravel, otomatik olarak sayfalama linklerini oluşturur.
Eğer pagination linklerini özelleştirmek istiyorsanız, Laravel’in sunduğu özellikleri kullanabilirsiniz. Örneğin, Bootstrap stilinde pagination linkleri oluşturmak için:
php artisan vendor:publish --tag=laravel-pagination
Bu komut, pagination view dosyalarını resources/views/vendor/pagination
dizinine kopyalar. Bu dosyaları düzenleyerek pagination linklerini özelleştirebilirsiniz.
Sıralama işlemleri, kullanıcıların verileri belirli bir kritere göre sıralamasını sağlar. Örneğin, gönderileri tarihe veya başlığa göre sıralamak isteyebilirsiniz.
Örnek Sıralama Kodu:
namespace App\Http\Controllers; use App\Models\Post; use Illuminate\Http\Request; class PostController extends Controller { public function index(Request $request) { $sortBy = $request->get('sort_by', 'created_at'); // Varsayılan sıralama kriteri $order = $request->get('order', 'desc'); // Varsayılan sıralama yönü $posts = Post::orderBy($sortBy, $order)->paginate(10); return view('posts.index', compact('posts', 'sortBy', 'order')); } }
Bu kod, sort_by
ve order
parametrelerine göre gönderileri sıralar ve sayfalar.
Blade template’de sıralama linkleri oluşturmak için aşağıdaki gibi bir yapı kullanabilirsiniz:
<!-- posts/index.blade.php --> <a href="{{ route('posts.index', ['sort_by' => 'title', 'order' => $order === 'asc' ? 'desc' : 'asc']) }}"> Başlık {{ $sortBy === 'title' ? ($order === 'asc' ? '▲' : '▼') : '' }} </a> <a href="{{ route('posts.index', ['sort_by' => 'created_at', 'order' => $order === 'asc' ? 'desc' : 'asc']) }}"> Tarih {{ $sortBy === 'created_at' ? ($order === 'asc' ? '▲' : '▼') : '' }} </a> @foreach ($posts as $post) <div> <h2>{{ $post->title }}</h2> <p>{{ $post->excerpt }}</p> </div> @endforeach {{ $posts->links() }}
Bu kod, başlık ve tarihe göre sıralama linklerini gösterir. Kullanıcı, bu linklere tıklayarak verileri sıralayabilir.
Laravel’de pagination ve sıralama işlemleri, büyük veri setlerini kullanıcıya daha kolay bir şekilde sunmanın en etkili yollarından biridir. Eğer kullanıcı deneyimini iyileştirmek ve performansı artırmak istiyorsanız, bu özellikleri mutlaka kullanmalısınız. Bir sonraki yazımda, Laravel’de Social Media Login Entegrasyonu konusuna değineceğim. Görüşmek üzere!