توسعه دهنده ارشد وب
دستهبندی مدلهای الکوئنت در فریمورک لاراول
در اکثر اپلیکیشن های تحت وب دستهبندی ها (Categories) نقش مهمی ایفا میکنند. در یک بلاگ ساده، یک فروشگاه اینترنتی، یک سیستم آموزشی و حتی سامانههای شخصی سازی شده و غیره مفهوم دسته بندی همیشه حظور دارد; مثلا در یک بلاگ، پستها میتوانند در دسته بندی های خاص خود باشند و همین طور محصولات یک فروشگاه، مقالات آموزشی یک موسسه و ...
من پس از بارها پیاده سازی فیچِر دسته بندیها در پروژه های مختلف، به این نتیجه رسیدم که سورس کد این فیچر را به یک پکیج لاراولی تبدیل کنم. در نتیجه پکیجی را به نام Laravel Categorizable منتشر کردم.
این پکیج با بهره گیری از روابط چندریختی (Polymorphism) این امکان را به ما میدهد که: هر مدلی را که خواستیم دسته بندی کنیم. به عبارت دیگر در یک اپلیکیشن لاراولی میتوانیم پستها، محصولات، ویدیوها و هر تعداد مدل دیگر که نیاز داریم را براحتی دسته بندی کنیم. با این پکیج همچنین ساخت، به روزرسانی و حذف دسته بندیها به راحتی قابل انجام است. در این نوشته به شرح موارد زیر میپردازیم:
- پیش نیاز
- نصب پکیج
- ساخت و مدیریت دسته بندی ها
- روش استفاده از پکیج (آماده سازی مدل)
- بررسی متدهایی که پکیج در اختیار ما میگذارد
- نتیجه گیری
پیش نیاز
- نسخه PHP ۷.۲ و یا بالاتر
- نسخه Laravel ۵.۸ و یا بالاتر (کاملا سازگار با لاراول ۶)
نصب پکیج
ابتدا به فولدر اصلی پروژه لاراولی رفته و دستورات زیر را در کامند لاین اجرا کنید.
نصب پکیج با کامپوزر:
انتشار و اجرای مایگریشن:
ساخت و مدیریت دسته بندی ها
پیش از آنکه به شرح چگونگی عملکرد پکیج بپردازیم.. ابتدا به چند دسته بندی اولیه جهت تست نیاز داریم. پکیح Laravel Categorizable
برای مدیریت کامل دسته بندی های ساده و تو در تو، خود از پکیج دیگری به نام laravel-nestedset استفاده میکند. در زیر طریقه افزودن دسته بندی والد و فرزند و حدف دسته بندی ها مرور شده است، اما این تمام کارآیی های این پکیج نیست و برای مستندات کامل آن میتوانید به ریپازیتوری گیتهاب این پکیج مراجعه کنید.
روش استفاده از پکیج (آماده سازی مدل)
برای آماده سازی مدل، فقط باید از تِرِیت پکیج داخل مدل مورد نظر استفاده کنید:
به همین سادگی ما قابلیت دستهبندی شدن رو به مدلPost
اضافه کردیم. با این کار یک سری متد ها که مربوط به این فیچر هستند به مدل ما اضافه میشه; در بخش بعد به معرفی این متد ها میپردازیم.
بررسی متدهایی که پکیج در اختیار ما میگذارد
برای نمایش دادن متدها، ابتدا چند متغیر را مقداردهی میکنیم:
در کد بالا ما موارد زیر را انجام دادیم:
- مدل های
Post
وCategory
را مورد استفاده قرار میدهیم - یک پست ثبت شده در سیستم را مقدار دهی میکنیم ( از طریق الکوينت، کوئریبیلدر و یا Route Model Binding فرقی ندارد )
- به ۳ روش مختلف دستهبندی هایی که ساختیم را در متغیرها مقدار دهی میکنیم
حال که متغیرها مقدار دهی شدهاند... برای:
افزودن پست به یک دسته بندی:
حذف پست از یک دستهبندی:
افزودن پست به چند دستهبندی:
حذف پست از تمام دستهبندی ها:
همگام سازی دستهبندی های پست:
بررسی پیوست پست به دستهبندی ها:
لیست دستهبندی های پیوست شده به یک پست:
این لیست به صورت آرایهای بازگشت داده میشود که کلیدهای آن فیلد id
دسته بندی و مقادیر آن فیلد name
دسته بندی هاست.
لیست پستهای پیوست شده به یک دستهبندی:
رابطه چند به چند categories
:
نتیجه گیری
این پکیج به گونه ای طراحی شده تا بتونه با مدلهای الکوئنت در تعامل باشه و هر جا که به دسته بندی ها نیاز بود براحتی قابل پیادهسازیه. سورس این پروژه روی گیتهاب موجود هست.
https://github.com/AliBayat/Laravel-Categorizable
و در پایان: چنانچه در اپلیکیشن لاراولی خود نیاز به دسته بندی دارید...نیازی به اختراع مجدد چرخ نیست. به راحتی پکیج را نصب و از آن استفاده کنید.
مطلبی دیگر از این انتشارات
آموزش لاراول خیلی به صورت خودمونی - قسمت یک - لاراول چیه؟
مطلبی دیگر از این انتشارات
OctoberCMS - اکتبر سی ام اس
مطلبی دیگر از این انتشارات
کاربردی ترین پکیج های لاراول