الوحدات
يعرض قسم Super Admin → الوحدات حالة أي وحدات مخصصة مسجّلة في تثبيت LeadHub الخاص بك.
لا يأتي LeadHub مع وحدات ميزات مدمجة — نظام الوحدات هو نقطة توسعة للمطورين تتيح لك إضافة وظائف جديدة إلى المنصة دون التعديل على الكود الأساسي.
ما هو نظام الوحدات؟
يستخدم LeadHub حزمة nWidart/laravel-modules لتطبيق بنية HMVC (Hierarchical Model-View-Controller).
تنظّم بنية HMVC الكود في وحدات مستقلة بذاتها، لكل منها مساراتها الخاصة والـ controllers والـ models والـ views والـ migrations ومزوّد الخدمة — وهي بالأساس تطبيق Laravel مصغّر يُحمَّل داخل التطبيق الرئيسي. هذا يعني:
- يمكنك إضافة ميزات جديدة كليًا (أقسام واجهة مستخدم جديدة، نقاط نهاية API جديدة، مهام خلفية جديدة) دون تعديل الكود الأساسي.
- يمكن تفعيل الوحدات أو تعطيلها في وقت التشغيل من لوحة Super Admin أو عبر
modules_statuses.json. - كل وحدة لها إصدار مستقل ويمكنها الإعلان عن اعتمادياتها على وحدات أخرى.
التثبيت (مضمّن مسبقًا في LeadHub)
الحزمة مثبّتة ومهيّأة بالفعل في LeadHub. للتحقق من ذلك:
composer show nwidart/laravel-modules
يوجد ملف إعداد الوحدات في config/modules.php، وتُخزَّن الوحدات في مجلد Modules/ في جذر ال مشروع.
إنشاء وحدتك الأولى
# إنشاء وحدة جديدة
php artisan module:make MyFeature
# إنشاء عدة وحدات دفعة واحدة
php artisan module:make ModuleA ModuleB ModuleC
# إنشاء بدون ملفات النموذج الافتراضية (الحد الأدنى فقط)
php artisan module:make MyFeature --plain
بعد تشغيل module:make، تُنشأ وحدتك في Modules/MyFeature/ وتُسجَّل تلقائيًا.
الهيكل الافتراضي للوحدة
Modules/
MyFeature/
app/
Http/
Controllers/ # Controllers الخاصة بالمسارات
Middleware/ # Middleware بنطاق الوحدة
Requests/ # فئات Form Request
Models/ # نماذج Eloquent
Providers/
MyFeatureServiceProvider.php # مزوّد الخدمة الرئيسي (يُحمَّل تلقائيًا)
RouteServiceProvider.php # يحمّل routes/web.php + routes/api.php
config/
config.php # إعدادات على مستوى الوحدة
database/
migrations/ # Migrations الوحدة (معزولة عن الأساسي)
seeders/
factories/
resources/
views/ # قوالب Blade
lang/ # سلاسل الترجمة
assets/ # JS/CSS (مجمَّعة عبر Vite)
routes/
web.php # مسارات الويب (محمّلة ضمن مجموعة middleware 'web')
api.php # مسارات API (محمّلة ضمن مجموعة middleware 'api')
tests/ # اختبارات وظيفية وحدوية
module.json # بيانات الوحدة والإعلان عن الاعتماديات
composer.json # التحميل التلقائي PSR-4 لفضاء أسماء هذه الوحدة
شرح الملفات الرئيسية
module.json
يعرّف هوية الوحدة وترتيب تحميلها:
{
"name": "MyFeature",
"alias": "myfeature",
"description": "Adds custom feature X to LeadHub",
"keywords": [],
"priority": 0,
"providers": [
"Modules\\MyFeature\\Providers\\MyFeatureServiceProvider"
],
"requires": []
}
priority— يتحكم في ترتيب التحميل؛ الرقم الأصغر يُحمَّل أولًا. استخدمه عندما تعتمد وحدتك على وحدة أخرى.requires— قائمة بأسماء مستعارة للوحدات التي تعتمد عليها هذه الوحدة. سيتحقق LeadHub من الاعتماديات قبل التحميل.
MyFeatureServiceProvider.php
نقطة الدخول لوحدتك. سجّل هنا المسارات والـ middleware والـ views والترجمات والـ bindings. المزوّد المُنشأ تلقائيًا يستدعي RouteServiceProvider ويسجّل views وترجمات الوحدة تلقائيًا.
config/config.php
إعدادات على مستوى الوحدة. يمكن الوصول إليها عبر:
config('myfeature.some_key');
انشر الإعدادات واستبدلها حسب البيئة باستخدام نشر الإعداد القياسي في Laravel.
مولّدات Artisan الشائعة
# Controllers, Models, Migrations
php artisan module:make-controller MyController MyFeature
php artisan module:make-model MyModel MyFeature
php artisan module:make-migration create_my_table MyFeature
# Requests, Middleware, Policies
php artisan module:make-request StoreMyRequest MyFeature
php artisan module:make-middleware CheckSomething MyFeature
php artisan module:make-policy MyPolicy MyFeature
# Jobs, Events, Listeners, Mail
php artisan module:make-job ProcessSomething MyFeature
php artisan module:make-event SomethingHappened MyFeature
php artisan module:make-listener HandleSomething MyFeature
php artisan module:make-mail WelcomeMail MyFeature
# أوامر Artisan
php artisan module:make-command MyCommand MyFeature
تشغيل Migrations و Seeds
تُحفظ migrations الوحدات بشكل منفصل عن الأساسي. شغّلها باستقلالية:
# ترحيل جميع الوحدات
php artisan module:migrate
# ترحيل وحدة محددة
php artisan module:migrate MyFeature
# التراجع
php artisan module:migrate-rollback MyFeature
# بذر البيانات
php artisan module:seed MyFeature
تفعيل الوحدات وتعطيلها
من سطر الأوامر:
php artisan module:enable MyFeature
php artisan module:disable MyFeature
php artisan module:list # يعرض جميع الوحدات وحالتها
من Super Admin → الوحدات: استخدم زر التبديل بجانب كل وحدة مسجّلة.
تُحفظ حالة الوحدات في ملف modules_statuses.json في جذر المشروع — أضف هذا الملف إلى نظام التحكم في الإصدارات.
اعتبارات تعدد المستأجرين
LeadHub متعدد المستأجرين. عند بناء الوحدات، ضع في اعتبارك:
- Migrations بنطاق المستأجر: شغّل
module:migrateداخل سياق المستأجر إذا كانت migration تنشئ جداول على مستوى المستأجر. - عزل مزوّد الخدمة: سجّل الـ middleware والـ policies ومستمعي الأحداث داخل مزوّد خدمة الوحدة لتجنب تلويث النطاق العام.
- التحكم في الميزات: ادمج زر تفعيل/تعطيل الوحدة مع نظام الخطط في LeadHub — عطّل وحدة عالميًا أو اقصرها على مستويات خطط معينة.
ذات الصلة
- الخطط — تحكّم في الميزات المتاحة لكل مستوى اشتراك
- صحة النظام — راقب حالة تحميل الوحدات والأخطاء
- توثيق nWidart/laravel-modules — المرجع الكامل للحزمة