رتبه موضوع:
  • 1 رای - 5 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
آموزش صفحه بندی در لاراول 5
#1
صفحه بندی کردن (Pagination)


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

هنگام بازیابی رکوردها از دیتابیس کافی است از متد paginate استفاده کنیم و تعداد آیتم های قابل نمایش در هر صفحه را هم به عنوان پارامتر به آن بدهیم :

کد پی‌اچ‌پی:
$users DB::table('users')->paginate(15);
$allUsers User::paginate(15);
 
$someUsers User::where('votes''>'100)->paginate(15); 


در مثال های فوق هم با روش کوئری بیلدر و هم Eloquent اینکار را انجام داده ایم و تعداد آیتم ها را ۱۵ تعیین کردیم.


حالا فرض کنید تمام کاربران را از دیتابیس واکشی کردیم و به صفحه view با متغیری به نام users ارسال کردیم. داخل ویو موردنظر کدهای زیر را قرار می دهیم :


کد پی‌اچ‌پی:
<div class="container">
 
   <?php foreach ($users as $user): ?>
        <?php echo $user->name?>
    <?php endforeach; ?>
</div>
 
<?php echo $users->render(); ?>


با استفاده از حلقه foreach نام کاربران را نمایش میدهیم. برای نمایش کد HTML مربوط به صفحه بندی هم از متد render استفاده میکنیم و آن را چاپ میکنیم. البته مثال بالا به روش php نوشته شده و شما بهتر است از موتور قالب Balde استفاده کنید. با CSS میتوانید قالب نمایش صفحه بندی را به دلخواه خودتان تغییر دهید.



غیر از متد render متدهای دیگر هم وجود دارند که می توانید اطلاعات بیشتری را بدست آورید به طور مثال currentPage شماره صفحه جاری را نمایش می دهد و lastPage شماره آخرین صفحه و ... 


اگر فقط می خواهید لینک Next و Previous نمایش داده شود و صفحه بندی ساده ای باشد از متد simplePaginate هنگام واکشی استفاده کنید. 


کد پی‌اچ‌پی:
$someUsers User::where('votes''>'100)->simplePaginate(15); 


به طور پیش فرض URL هنگام صفحه بندی مثلا به صورت 2=page? خواهد بود شما می توانید با متد setPath یک URL دلخواه هنگام نمایش صفحه بندی ایجاد کنید :


کد پی‌اچ‌پی:
$users User::paginate();
 
$users->setPath('custom/url'); 


در مثال بالا آدرس URL به صورت http://example.com/custom/url?page=2 نمایش داده می شود.


به انتهای URL می توانیم کوئری استرینگ هم اضافه کنیم. هنگام نمایش صفحه بندی با استفاده از متد append که داده های کوئری استرینگ را به عنوان آرایه به آن می دهیم :


کد پی‌اچ‌پی:
<?php echo $users->appends(['sort' => 'votes'])->render(); ?>


در مثال بالا آدرس URL به صورت http://example.com/something?page=2&sort=votes نمایش داده میشود.

همچنین می توانیم با متد fragment یک آدرس fragment را به انتهای URL اضافه کنیم.


کد پی‌اچ‌پی:
<?php echo $users->fragment('foo')->render(); ?>


در مثال بالا URL به صورت http://example.com/something?page=2#foo نمایش داده می شود.

(با تشکر از حامد آریان)
قوانین انجمن لاراولیستا  | شماره تماس :‌09124783045 |‌ تلگرام :‌ 09377869283
پاسخ
 


موضوعات مشابه ...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  بهترین پکیج acl برای لاراول چیست homeily@gmail.com 2 34 12-18-2016, 08:43 AM
آخرین ارسال: hamo
  تغییر نکردن محتوای صفحه پس از ارسال id mahsandr 0 84 11-24-2016, 03:31 PM
آخرین ارسال: mahsandr
  آموزش اعتبار سنجی در لاراول 5 alihossein 4 830 11-20-2016, 07:12 AM
آخرین ارسال: حمید رﺽا کمالی
  آموزش روتینگ routing در لاراول 5 alihossein 2 1,245 11-12-2016, 04:37 AM
آخرین ارسال: حمید رﺽا کمالی
  اجرای کوئری در لاراول amirbakhtiari 1 51 11-06-2016, 07:50 AM
آخرین ارسال: hamo
  آموزش کار با دیتابیس در لاراول 5 alihossein 6 1,767 10-27-2016, 01:01 PM
آخرین ارسال: sempaisaleh
  کند بودن بیش از حد اجرای لاراول feri 0 51 10-19-2016, 05:09 PM
آخرین ارسال: feri
  ایجاد نشدن همه فایل ها بعد از نصب لاراول armin4838 1 83 10-15-2016, 04:17 PM
آخرین ارسال: armin4838
  اشکال در اجرای لاراول محمد 1 96 10-13-2016, 08:14 AM
آخرین ارسال: hamo
  مشکل در راه اندازی لاراول hadi2016 2 86 09-21-2016, 11:00 AM
آخرین ارسال: hadi2016

پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان

درباره انجمن فریم ورک لاراول

انجمن لاراولیستا به عشق توسعه دهنده ها و علاقمندان به این فریم ورک محبوب ایجاد شده و امیدواریم با نظرات خوبتون ما رو در بهبود کار یاری کنید. در ضمن خیلی هم خوشحال میشیم شما هم در توسعه این انجمن سهمی داشته باشید.