در لاراول، Pagination یا صفحهبندی یک ویژگی قدرتمند است که به شما این امکان را میدهد تا دادهها را به صفحات مختلف تقسیم کرده و آنها را در رابط کاربری به صورت مرتب نمایش دهید. این ویژگی بهویژه زمانی مفید است که دادههای زیادی دارید و نمیخواهید همهی دادهها را در یک صفحه بارگذاری کنید.
لاراول ابزارهای مختلفی برای پیادهسازی صفحهبندی به صورت ساده و کارآمد فراهم میکند.
🚀 صفحهبندی با Eloquent
لاراول به صورت پیشفرض از صفحهبندی برای مدلهای Eloquent پشتیبانی میکند. برای استفاده از صفحهبندی، شما فقط نیاز به متد paginate() دارید.
نحوه استفاده از paginate()
متد paginate() به شما این امکان را میدهد که نتایج را به تعداد مشخصی در هر صفحه تقسیم کنید.
مثال: صفحهبندی با Eloquent
فرض کنید که میخواهید تمام کاربران را به صورت صفحهبندی شده نمایش دهید:
در اینجا، User::paginate(10) 10 کاربر در هر صفحه برمیگرداند.
نمایش دادهها در ویو
در ویو، شما میتوانید از {{ $users->links() }} برای نمایش لینکهای صفحهبندی استفاده کنید. لاراول به طور خودکار لینکهای صفحهبندی را به شما میدهد.
مثال در Blade:
این کد لیستی از کاربران را در هر صفحه نمایش میدهد و در انتهای صفحه لینکهای صفحهبندی را به طور خودکار تولید میکند.
⚡ صفحهبندی با Query Builder
همچنین میتوانید از صفحهبندی با Query Builder استفاده کنید. در این حالت، به جای استفاده از مدل Eloquent، از DB یا Query Builder لاراول استفاده میکنید.
نحوه استفاده از paginate() با Query Builder
نمایش دادهها در Blade:
⚡ صفحهبندی با Custom Pagination
گاهی ممکن است نیاز داشته باشید تا صفحهبندی را سفارشی کنید، مثل تغییر تعداد آیتمها در هر صفحه، یا تغییر ظاهر لینکها. لاراول امکان سفارشیسازی صفحهبندی را فراهم کرده است.
تغییر تعداد آیتمها در هر صفحه
شما میتوانید تعداد آیتمهایی که در هر صفحه میخواهید نمایش داده شود را به طور داینامیک از درخواست کاربر دریافت کنید. مثلاً میتوانید تعداد آیتمها را از URL یا فرم ورودی دریافت کنید.
مثال:
در اینجا، تعداد آیتمها از ورودی per_page در درخواست (Request) گرفته میشود و اگر موجود نبود، به صورت پیشفرض 10 در نظر گرفته میشود.
⚡ صفحهبندی در Ajax
اگر بخواهید صفحهبندی را به صورت Ajax پیادهسازی کنید تا نیازی به بارگذاری مجدد صفحه نباشد، میتوانید به سادگی از جاوااسکریپت و Ajax برای بارگذاری دادههای صفحه جدید استفاده کنید.
نحوه پیادهسازی صفحهبندی با Ajax
-
در ابتدا، صفحهبندی را به همان صورت معمولی پیادهسازی میکنید، اما با ارسال درخواست Ajax بهجای بارگذاری مجدد کامل صفحه.
-
سپس، نتیجه را به صورت داینامیک در صفحه نمایش میدهید.
مثال: پیادهسازی صفحهبندی Ajax در Laravel
در این مثال، وقتی که کاربر روی یکی از لینکهای صفحهبندی کلیک کند، یک درخواست Ajax ارسال میشود و دادههای صفحه جدید بدون بارگذاری مجدد صفحه، بارگذاری میشود.
در کنترلر:
📋 جمعبندی
-
استفاده از
paginate(): با استفاده از متدpaginate()میتوانید دادهها را به صفحات مختلف تقسیم کنید. -
نمایش صفحهبندی با
{{ $users->links() }}: برای نمایش لینکهای صفحهبندی در Blade از این متد استفاده کنید. -
سفارشیسازی: شما میتوانید تعداد آیتمها در هر صفحه را به طور داینامیک از ورودی کاربر تنظیم کنید.
-
صفحهبندی Ajax: با استفاده از درخواستهای Ajax میتوانید دادهها را بدون بارگذاری مجدد صفحه نمایش دهید.
این ویژگی در لاراول، برای کار با دادههای زیاد بسیار مفید است و تجربه کاربری بهتری را فراهم میکند.