مارک پلاس

تکنولوژی نوین اینترنتی

Pagination لاراول

دسته‌بندی‌ها

Pagination لاراول
Pagination لاراول

در لاراول، Pagination یا صفحه‌بندی یک ویژگی قدرتمند است که به شما این امکان را می‌دهد تا داده‌ها را به صفحات مختلف تقسیم کرده و آن‌ها را در رابط کاربری به صورت مرتب نمایش دهید. این ویژگی به‌ویژه زمانی مفید است که داده‌های زیادی دارید و نمی‌خواهید همه‌ی داده‌ها را در یک صفحه بارگذاری کنید.

لاراول ابزارهای مختلفی برای پیاده‌سازی صفحه‌بندی به صورت ساده و کارآمد فراهم می‌کند.


🚀 صفحه‌بندی با Eloquent

لاراول به صورت پیش‌فرض از صفحه‌بندی برای مدل‌های Eloquent پشتیبانی می‌کند. برای استفاده از صفحه‌بندی، شما فقط نیاز به متد paginate() دارید.

نحوه استفاده از paginate()

متد paginate() به شما این امکان را می‌دهد که نتایج را به تعداد مشخصی در هر صفحه تقسیم کنید.

مثال: صفحه‌بندی با Eloquent

فرض کنید که می‌خواهید تمام کاربران را به صورت صفحه‌بندی شده نمایش دهید:

php
// در کنترلر public function index() { $users = User::paginate(10); // 10 کاربر در هر صفحه return view('users.index', compact('users')); }

در اینجا، User::paginate(10) 10 کاربر در هر صفحه برمی‌گرداند.


نمایش داده‌ها در ویو

در ویو، شما می‌توانید از {{ $users->links() }} برای نمایش لینک‌های صفحه‌بندی استفاده کنید. لاراول به طور خودکار لینک‌های صفحه‌بندی را به شما می‌دهد.

مثال در Blade:

php
<!-- نمایش لیست کاربران --> @foreach ($users as $user) <p>{{ $user->name }}</p> @endforeach <!-- نمایش صفحه‌بندی --> {{ $users->links() }}

این کد لیستی از کاربران را در هر صفحه نمایش می‌دهد و در انتهای صفحه لینک‌های صفحه‌بندی را به طور خودکار تولید می‌کند.


صفحه‌بندی با Query Builder

همچنین می‌توانید از صفحه‌بندی با Query Builder استفاده کنید. در این حالت، به جای استفاده از مدل Eloquent، از DB یا Query Builder لاراول استفاده می‌کنید.

نحوه استفاده از paginate() با Query Builder

php
// در کنترلر public function index() { $posts = DB::table('posts')->paginate(5); // 5 پست در هر صفحه return view('posts.index', compact('posts')); }

نمایش داده‌ها در Blade:

php
@foreach ($posts as $post) <p>{{ $post->title }}</p> @endforeach <!-- نمایش صفحه‌بندی --> {{ $posts->links() }}

صفحه‌بندی با Custom Pagination

گاهی ممکن است نیاز داشته باشید تا صفحه‌بندی را سفارشی کنید، مثل تغییر تعداد آیتم‌ها در هر صفحه، یا تغییر ظاهر لینک‌ها. لاراول امکان سفارشی‌سازی صفحه‌بندی را فراهم کرده است.

تغییر تعداد آیتم‌ها در هر صفحه

شما می‌توانید تعداد آیتم‌هایی که در هر صفحه می‌خواهید نمایش داده شود را به طور داینامیک از درخواست کاربر دریافت کنید. مثلاً می‌توانید تعداد آیتم‌ها را از URL یا فرم ورودی دریافت کنید.

مثال:

php
public function index(Request $request) { $perPage = $request->input('per_page', 10); // تعداد آیتم‌ها پیش‌فرض 10 $users = User::paginate($perPage); return view('users.index', compact('users')); }

در اینجا، تعداد آیتم‌ها از ورودی per_page در درخواست (Request) گرفته می‌شود و اگر موجود نبود، به صورت پیش‌فرض 10 در نظر گرفته می‌شود.


صفحه‌بندی در Ajax

اگر بخواهید صفحه‌بندی را به صورت Ajax پیاده‌سازی کنید تا نیازی به بارگذاری مجدد صفحه نباشد، می‌توانید به سادگی از جاوااسکریپت و Ajax برای بارگذاری داده‌های صفحه جدید استفاده کنید.

نحوه پیاده‌سازی صفحه‌بندی با Ajax

  1. در ابتدا، صفحه‌بندی را به همان صورت معمولی پیاده‌سازی می‌کنید، اما با ارسال درخواست Ajax به‌جای بارگذاری مجدد کامل صفحه.

  2. سپس، نتیجه را به صورت داینامیک در صفحه نمایش می‌دهید.

مثال: پیاده‌سازی صفحه‌بندی Ajax در Laravel

javascript
$(document).on('click', '.pagination a', function(e) { e.preventDefault(); var url = $(this).attr('href'); $.ajax({ url: url, success: function(data) { $('#users-list').html(data); } }); });

در این مثال، وقتی که کاربر روی یکی از لینک‌های صفحه‌بندی کلیک کند، یک درخواست Ajax ارسال می‌شود و داده‌های صفحه جدید بدون بارگذاری مجدد صفحه، بارگذاری می‌شود.

در کنترلر:

php
public function index(Request $request) { $users = User::paginate(10); if ($request->ajax()) { return view('users.partials.users', compact('users')); // نمایش داده‌ها در بخش خاص } return view('users.index', compact('users')); }

📋 جمع‌بندی

  1. استفاده از paginate(): با استفاده از متد paginate() می‌توانید داده‌ها را به صفحات مختلف تقسیم کنید.

  2. نمایش صفحه‌بندی با {{ $users->links() }}: برای نمایش لینک‌های صفحه‌بندی در Blade از این متد استفاده کنید.

  3. سفارشی‌سازی: شما می‌توانید تعداد آیتم‌ها در هر صفحه را به طور داینامیک از ورودی کاربر تنظیم کنید.

  4. صفحه‌بندی Ajax: با استفاده از درخواست‌های Ajax می‌توانید داده‌ها را بدون بارگذاری مجدد صفحه نمایش دهید.

این ویژگی در لاراول، برای کار با داده‌های زیاد بسیار مفید است و تجربه کاربری بهتری را فراهم می‌کند.

محتوای مرتبط

پست‌های مرتبط