حالا چرا لاراول؟ شاهدی به نام صفحه‌بندی

فرض کنید وبلاگی ساخته‌ایم که چیزی حدود سیصد پست دارد که باید در صفحه‌ای نمایش داده شود، ولی هر صفحه، جای حداکثر ده نوشته دارد.

با لاراول و بی لاراول چه کنیم؟


به دنبال مطالبی که با عنوان «حالا چرا لاراول» نوشتم، امروز می‌خواهم از صفحه‌بندی بگویم.

اینجا یک وبلاگ آموزشی نیست و نوشته‌ها هم قرار نیست آموزشی باشند. صرفاً می‌خواهم دوستانم را به همه معرفی کنم.

باز هم تکرار می‌کنم:

لاراول، دنیایی است با ابزارهایی رنگ و وارنگ و اسم‌های جذاب، که اغلب از قبل وجود داشته‌اند و حیاتشان را مدیون لاراول نیستند، اما زیبایی در کنار هم بودنشان را چرا.

اول، بدون کمک لاراول

  1. با استفاده از یک کوئری ساده، ده رکوردی که قرار است نمایش دهیم را جدا می‌کنیم. (برای این کار لازم است بدانیم اکنون در صفحه‌ی چندم هستیم تا شمارش را از جای درست شروع کنیم که زیاد سخت نیست.)
  2. ده رکورد انتخاب‌شده را در صفحه نمایش می‌دهیم.
  3. پایین یا بالای صفحه را به یک شمارشگر صفحه اختصاص می‌دهیم که مردم بتوانند به صفحه‌ی قبل و بعد بروند و تعداد کل صفحات را ببینند و بدانند که اکنون در کدام صفحه هستند. استایل مربوط به این کار را هم لابد از قبل حاضر کرده‌ایم و داریم.
  4. از آنجا که شمارشگر تعداد صفحات را نشان می‌دهد، باید با کوئری دیگری تعداد کل رکوردها را بشماریم تا بتوانیم آن را بر عدد ده تقسیم کرده و تعداد صفحات را بیابیم.
  5. لینک‌های شمارشگر را طوری می‌سازیم که شماره‌ی صفحه‌ای که به آن اشاره می‌کنند را با متد GET از سرور درخواست کنند.
  6. شمارشگر ما صفحه‌ی فعلی را باید از همان متد GET که دستور قبلی فرستاده بفهمد و آن را متمایز بسازد تا مردم بفهمند که در کدام صفحه هستند.
  7. شمارشگر ما باید دکمه‌هایی برای پرش سریع به اولین و آخرین صفحه داشته باشد. این هم زیاد سخت نیست و انجامش می‌دهیم.
  8. برنامه‌ی ما باید پرت و پلاهایی که کاربران شیطان وارد می‌کنند را هضم نماید؛ مثل وقتی که یک نفر در شش صفحه اطلاعات، دنبال صفحه‌ی هفتادم یا صفحه منفی سوم می‌گردد.

تمام شد. به همین راحتی (؟!) یک صفحه‌بندی خوب و بی‌منت درست کرده‌ایم.


حالا، با کمک لاراول

گام اول، در کنترلر...

در انتهای همان دستوری که برای فراخوانی پست‌های وبلاگ داده‌ایم، یک فلش می‌گذاریم و متدی به نام paginate را صدا می‌زنیم و به او می‌گوییم که گنجایش صفحه‌ی ما چقدر است.

به این صورت:

$posts = Post::where('category','folan')->paginate(10)  ;

مرحله دوم، هنگام نمایش...

در فایل view، پس از آن که ده پست وبلاگی که با متغیر posts$ به دستمان رسیده را هر جور دلمان خواست نمایش دادیم، شمارشگر خود را قرار می‌دهیم.

به این صورت:

{!! $posts->render() !!}

مرحله سومی وجود ندارد!

تمام شد و رفت.

لاراول یک شمارشگر باوقار و شیک بوت‌استرپ، با تمام خصوصیاتی که برشمردیم را برایمان می‌سازد، لینک‌های آن را می‌سازد و متغیرهای مورد نظر را به سمت سرور ارسال می‌کند و خودش هم آنجا حی و حاضر است و تجزیه و تحلیلشان می‌کند و متوجه می‌شود که اکنون در کدام صفحه قرار داریم و صفحه‌ی مورد نظر را متمایز می‌سازد.

لاراول، حتی استایل‌های مورد نظر را از پیش حاضر کرده و مادامی که نخواهیم تغییری در ظاهر آن دهیم، واقعاً هیچ کار دیگری نیست که لازم باشد انجام دهیم.

نمایی از یک صفحه‌بندی ساده لاراولی، با داده‌های آزمایشی که تصادفی در جدول ریخته شده‌اند
نمایی از یک صفحه‌بندی ساده لاراولی، با داده‌های آزمایشی که تصادفی در جدول ریخته شده‌اند


در اینجا اگر انتقادی به لاراول باشد، این است که دل یک برنامه‌نویس خسته، به همین کارهای ساده‌ی بدون چالش خوش است که لاراول ترجیح می‌دهد خودش انجام بدهد!


پیش از پایان

  • اگر به ادامه‌ی این نوشته‌ها علاقه‌مندید و عضو ویرگول نیستید که مستقیم پی‌گیر شوید، از فید آراس‌اس استفاده کنید یا در توییتر بنده را فالو بفرمایید.
  • اگر دستی بر قلم دارید، با همین هشتگ «چرا لاراول» در همین سایت معظم ویرگول، نیز می‌توانید شروع به نوشتن درباره‌ی خوبی‌ها و بدی‌های این فریمورک کنید تا همه استفاده نماییم.

پایان (: