ali.bayat
ali.bayat
خواندن ۲ دقیقه·۳ سال پیش

کامنت های پلی مورفیک برای اپلیکیشن لاراولی

کامنت های پلی مورفیک با پکیج Laravel Commentable
کامنت های پلی مورفیک با پکیج Laravel Commentable


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

به کمک پکیج Laravel Commentable می‌توانیم این قابلیت را در مدل های مختلف اپلیکیشن لاراولی مهیا کنیم.. تنها کافیست از Trait پکیج در داخل مدل های الکوئنت استفاده کرد.

این پکیج با بهره گیری از روابط چند ریختی (Polymorphism) این امکان را به ما می‌دهد که: برای هر مدلی را که خواستیم کامنت ثبت کنیم. به عبارت دیگر در یک اپلیکیشن لاراولی می‌توانیم برای پست‌ها، محصولات، ویدیو‌ها و هر تعداد مدل دیگر که نیاز داریم، کامنت ثبت کنیم. در این نوشته به شرح موارد زیر می‌پردازیم:

  • پیش نیاز‌
  • نصب پکیج
  • ساخت و مدیریت دسته بندی ها
  • روش استفاده از پکیج (آماده سازی مدل)
  • بررسی متدهایی که پکیج در اختیار ما می‌گذارد
  • نتیجه گیری

پیش نیاز‌

  • نسخه PHP ۷.۲ و یا بالاتر
  • نسخه Laravel ۷ و یا بالاتر (کاملا سازگار با لاراول ۸)

نصب

برای نصب پکیج از طریق کامپوزر:

نصب با کامپوزر
نصب با کامپوزر


سپس مایگریشن و فایل کانفیگ را پابلیش کرده و مایگریشن رو اجرا کنید:

انتشار و اجرای مایگریشن
انتشار و اجرای مایگریشن



روش استفاده از پکیج (آماده سازی مدل)

برای آماده سازی مدل، فقط باید از تِرِیت پکیج داخل مدل مورد نظر استفاده کنید:

آماده سازی مدل برای استفاده
آماده سازی مدل برای استفاده


حالا می‌توانید به راحتی با متد های پکیج کار کنید..

  • برای پست کامنت جدید ایجاد کنید
  • کامنت را ویرایش و یا حذف کنید
  • کامنت های تو در تو در پاسخ سایر کامنت ها بسازید
  • کامنت ها را فعال یا غیر فعال کنید (مناسب برای پایش کامنت ها)
  • از روابط بین مدل ها استفاده کنید
  • از روابط پکیج Nestedset بهره ببرید

بررسی متدهایی که پکیج در اختیار ما می‌گذارد

برای نمایش دادن متد‌ها، ابتدا چند متغیر را مقداردهی می‌کنیم:

مقداردهی متغیرها
مقداردهی متغیرها



حال که متغیرها مقدار دهی شده‌ اند... برای:

ثبت کامنت برای پست:

ثبت کامنت برای پست
ثبت کامنت برای پست

ثبت کامنت فرزند برای پست:

ثبت کامنت فرزند برای پست
ثبت کامنت فرزند برای پست


ویرایش یک کامنت مرتبط با پست:

ویرایش یک کامنت مرتبط با پست
ویرایش یک کامنت مرتبط با پست


حذف یکی از کامنت های پست:

حذف یکی از کامنت های پست
حذف یکی از کامنت های پست


حذف تمام کامنت های پست:

حذف تمام کامنت های پست
حذف تمام کامنت های پست


بررسی فرزند داشتن یک کامنت:

بررسی فرزند داشتن یک کامنت
بررسی فرزند داشتن یک کامنت


شمارش کامنت های پست:

شمارش کامنت های پست
شمارش کامنت های پست




به صورت پیش فرض کامنت ها در سیستم به شکل غیر فعال ثبت می‌شوند، مگر اینکه مقدار فیلد active برابر با true باشد


ثبت یک کامنت فعال:

ثبت یک کامنت فعال
ثبت یک کامنت فعال


فعال سازی یک کامنت:

فعال سازی یک کامنت
فعال سازی یک کامنت


غیر فعال سازی یک کامنت:




روابط بین مدل ها برای Eagerloading به شرح زیر می‌باشند:



رابطه comments:

رابطه comments
رابطه comments


رابطه activeComments:

رابطه activeComments
رابطه activeComments


رابطه parent:

رابطه parent
رابطه parent


رابطه children:

رابطه children
رابطه children


رابطه ancestors:

رابطه ancestors
رابطه ancestors


رابطه descendants:

رابطه descendants
رابطه descendants




همچنین متدهای در دسترس از طریق پکیج Nestedset به شرح زیر می‌باشند:



متد toTree:

متد toTree
متد toTree


متد toFlatTree:

متد toFlatTree
متد toFlatTree


متد saveAsRoot:

متد saveAsRoot
متد saveAsRoot


متد makeRoot:

متد makeRoot
متد makeRoot


متد هایی که از پکیج Nestedset بررسی کردیم، تمام کارآیی های این پکیج نیست و برای مستندات کامل آن می‌توانید به ریپازیتوری گیت‌هاب این پکیج مراجعه کنید.




نتیجه گیری

این پکیج به گونه ای طراحی شده تا بتونه با مدل‌های الکوئنت در تعامل باشه و هر جا که به کامنت نیاز بود براحتی قابل پیاده‌سازیه. سورس این پروژه روی گیت‌هاب موجود هست.

https://github.com/AliBayat/Laravel-Commentable


phplaravelpackagesCommentscommentable
توسعه دهنده ارشد وب
شاید از این پست‌ها خوشتان بیاید