نسخه:

صفحه بندی

پیکربندی

در چارچوب های دیگر، صفحه بندی می تواند بسیار دردناک باشد. لاراول آن را نسیم می کند. لاراول می تواند "محدوده" هوشمندی از لینک ها را بر اساس صفحه فعلی ایجاد کند. HTML تولید شده با چارچوب CSS Bootstrap سازگار است.

استفاده

روش های مختلفی برای صفحه بندی آیتم ها وجود دارد. ساده ترین روش استفاده از paginate روش در سازنده پرس و جو یا مدل Eloquent است.

صفحه بندی نتایج پایگاه داده

$users = DB::table('users')->paginate(15);

توجه: در حال حاضر، عملیات صفحه‌بندی که از یک groupBy دستور استفاده می‌کنند، توسط لاراول قابل اجرا نیستند. اگر نیاز به استفاده از a groupBy با مجموعه نتایج صفحه‌بندی شده دارید، توصیه می‌شود که پایگاه داده را پرس و جو کنید و یک صفحه‌نمای دستی ایجاد کنید.

ایجاد صفحه‌نماگر به صورت دستی

گاهی اوقات ممکن است بخواهید یک نمونه صفحه بندی را به صورت دستی ایجاد کنید و مجموعه ای از موارد را به آن ارسال کنید. بسته به نیازتان، می‌توانید این کار را با ایجاد یک 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 در دسترس خواهند بود.