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


موضوعات مشابه ...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  خطای نصب لاراول dmbehrouz 1 52 11-27-2017, 10:34 AM
آخرین ارسال: jergis
  سایت رو آپلود کردم ولی صفحه سفید میاد abi128 6 369 11-27-2017, 10:32 AM
آخرین ارسال: jergis
  ریدایرکت شدن صفحه اصلی به صفحه لاگین mba122 0 30 11-13-2017, 08:25 AM
آخرین ارسال: mba122
  صفحه بندی در لاراول ۵.۵ sadaf 0 73 10-26-2017, 09:26 PM
آخرین ارسال: sadaf
  سرور برای لاراول mahmood_20050 0 51 10-24-2017, 10:00 AM
آخرین ارسال: mahmood_20050
  گرفتن آپدیت های وب هوک تلگرام در لاراول Mr.AMiR 6 279 09-19-2017, 04:30 AM
آخرین ارسال: Bvk.Programmer
  مشکل افت سرعت وقتی از لاراول به جای php استفاده می کنم Zahir 1 118 08-31-2017, 08:40 AM
آخرین ارسال: imanghafoori
  آموزش اعتبار سنجی در لاراول 5 alihossein 5 1,359 07-30-2017, 08:47 AM
آخرین ارسال: shima71
  آموزش فارسی لاراول ۵ alihossein 7 3,949 07-28-2017, 06:44 PM
آخرین ارسال: shima71
  انتقال سایت mvc به لاراول miladhassan 1 103 07-26-2017, 09:01 AM
آخرین ارسال: fery

پرش به انجمن:


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

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

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