رتبه موضوع:
  • 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 |‌ مدیریت کانال تلگرام
پاسخ
 


موضوعات مشابه ...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  مشکل افت سرعت وقتی از لاراول به جای php استفاده می کنم Zahir 0 27 08-11-2017, 08:15 PM
آخرین ارسال: Zahir
  گرفتن آپدیت های وب هوک تلگرام در لاراول Mr.AMiR 4 117 08-06-2017, 09:51 AM
آخرین ارسال: maryam_f123
  آموزش اعتبار سنجی در لاراول 5 alihossein 5 1,128 07-30-2017, 08:47 AM
آخرین ارسال: shima71
  آموزش فارسی لاراول ۵ alihossein 7 3,546 07-28-2017, 06:44 PM
آخرین ارسال: shima71
  انتقال سایت mvc به لاراول miladhassan 1 52 07-26-2017, 09:01 AM
آخرین ارسال: fery
Question راه اندازی لاراول روی سیستم افلاین؟ fery 0 25 07-26-2017, 08:55 AM
آخرین ارسال: fery
Sad مشکل در ایجاد وبلاگ در لاراول 5.4 itroz 0 60 07-05-2017, 05:03 PM
آخرین ارسال: itroz
  گروه بندی زهرا 1 36 05-14-2017, 07:19 AM
آخرین ارسال: زهرا
  بهترین پکیج acl برای لاراول چیست homeily@gmail.com 3 231 05-08-2017, 09:27 AM
آخرین ارسال: Geppeto
  لینک فایل های css و js در لاراول saeed.rahgooy@gmail.com 1 76 05-01-2017, 07:50 PM
آخرین ارسال: zootech

پرش به انجمن:


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

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

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