صفحه بندی
پیکربندی
در چارچوب های دیگر، صفحه بندی می تواند بسیار دردناک باشد. لاراول آن را نسیم می کند. لاراول می تواند "محدوده" هوشمندی از لینک ها را بر اساس صفحه فعلی ایجاد کند. HTML تولید شده با چارچوب CSS Bootstrap سازگار است.
استفاده
روش های مختلفی برای صفحه بندی آیتم ها وجود دارد.
ساده ترین روش استفاده از
paginate
روش در سازنده پرس و جو یا مدل Eloquent است.
صفحه بندی نتایج پایگاه داده
$users = DB::table('users')->paginate(15);
توجه: در حال حاضر، عملیات صفحهبندی که از یک
groupBy
دستور استفاده میکنند، توسط لاراول قابل اجرا نیستند. اگر نیاز به استفاده از agroupBy
با مجموعه نتایج صفحهبندی شده دارید، توصیه میشود که پایگاه داده را پرس و جو کنید و یک صفحهنمای دستی ایجاد کنید.
ایجاد صفحهنماگر به صورت دستی
گاهی اوقات ممکن است بخواهید یک نمونه صفحه بندی را به صورت دستی ایجاد کنید و مجموعه ای از موارد را به آن ارسال کنید.
بسته به نیازتان،
میتوانید این کار را با ایجاد یک
Illuminate\Pagination\Paginator
یا نمونه انجام دهید.
Illuminate\Pagination\LengthAwarePaginator
صفحه بندی یک مدل شیوا
همچنین می توانید مدل های Eloquent را صفحه بندی کنید :
$allUsers = User::paginate(15); $someUsers = User::where('votes', '>', 100)->paginate(15);
آرگومان ارسال شده به
paginate
متد تعداد مواردی است که می خواهید در هر صفحه نمایش دهید.
هنگامی که نتایج را بازیابی کردید، می توانید آنها را در نمای خود نمایش دهید و پیوندهای صفحه بندی را با استفاده از
render
روش زیر ایجاد کنید:
<div class="container"> <?php foreach ($users as $user): ?> <?php echo $user->name; ?> <?php endforeach; ?></div> <?php echo $users->render(); ?>
این تمام چیزی است که برای ایجاد یک سیستم صفحه بندی لازم است! توجه داشته باشید که ما مجبور نبودیم چارچوب صفحه فعلی را اطلاع دهیم. لاراول به طور خودکار این را برای شما تعیین می کند.
همچنین می توانید از طریق روش های زیر به اطلاعات صفحه بندی اضافی دسترسی داشته باشید:
-
currentPage
-
lastPage
-
perPage
-
hasMorePages
-
url
-
nextPageUrl
-
firstItem
-
lastItem
-
total
-
count
"صفحه بندی ساده"
اگر فقط پیوندهای «بعدی» و «قبلی» را در نمای صفحهبندی خود نشان میدهید، میتوانید از روش
simplePaginate
برای انجام پرس و جوی کارآمدتر استفاده کنید.
زمانی که نیازی به نمایش اعداد دقیق صفحه در نمای خود ندارید، این برای مجموعه داده های بزرگتر مفید است:
$someUsers = User::where('votes', '>', 100)->simplePaginate(15);
سفارشی کردن URI صفحهنماگر
همچنین میتوانید URI مورد استفاده صفحهکننده را از طریق
setPath
روش زیر سفارشی کنید:
$users = User::paginate(); $users->setPath('custom/url');
مثال بالا URL هایی مانند زیر ایجاد می کند: http://example.com/custom/url?page=2
الحاق به پیوندهای صفحه بندی
می توانید با استفاده از
appends
روش صفحه بندی کننده به رشته پرس و جو پیوندهای صفحه بندی اضافه کنید:
<?php echo $users->appends(['sort' => 'votes'])->render(); ?>
با این کار URL هایی ایجاد می شود که چیزی شبیه به این هستند:
http://example.com/something?page=2&sort=votes
اگر میخواهید یک «پاره هش» به URL صفحهبندی کننده اضافه کنید، میتوانید از
fragment
روش زیر استفاده کنید:
<?php echo $users->fragment('foo')->render(); ?>
این فراخوانی متد URL هایی را ایجاد می کند که چیزی شبیه به این هستند:
http://example.com/something?page=2#foo
تبدیل به JSON
کلاس قرارداد
Paginator
را اجرا می کند
Illuminate\Contracts\Support\JsonableInterface
و
toJson
روش را آشکار می کند.
همچنین می توانید یک
Paginator
نمونه را با بازگرداندن آن از یک مسیر به JSON تبدیل کنید.
فرم JSON'd نمونه شامل برخی از اطلاعات "متا" مانند
total
،
current_page
و و
last_page
.
دادههای نمونه از طریق
data
کلید موجود در آرایه JSON در دسترس خواهند بود.