Modüller
Süper Yönetici → Modüller, LeadHub kurulumunuzda kayıtlı özel modüllerin durumunu görüntüler.
LeadHub yerleşik özellik modülleriyle birlikte gelmez — modül sistemi, temel kod tabanına dokunmadan platforma yeni işlevsellik eklemenize olanak tanıyan bir geliştirici genişletme noktasıdır.
Modül Sistemi Nedir?
LeadHub, HMVC (Hiyerarşik Model-Görünüm-Denetleyici) mimarisini uygulamak için nWidart/laravel-modules kullanır.
HMVC, kodu bağımsız modüller halinde düzenler; her modül kendi rotaları, denetleyicileri, modelleri, görünümleri, göçleri ve servis sağlayıcısına sahiptir — esasen ana uygulamaya yüklenen küçük bir Laravel uygulamasıdır. Bu şu anlama gelir:
- Temel kodu düzenlemeden tamamen yeni özellikler (yeni kullanıcı arayüzü bölümleri, yeni API uç noktaları, yeni arka plan işleri) ekleyebilirsiniz.
- Modüller, Süper Yönetici panelinden veya
modules_statuses.jsonaracılığıyla çalışma zamanında etkinleştirilebilir veya devre dışı bırakılabilir. - Her modül bağımsız olarak sürümlenir ve diğer modüllere bağımlılıklarını bildirebilir.
Kurulum (LeadHub'a zaten dahildir)
Paket, LeadHub'a zaten kurulmuş ve yapılandırılmıştır. Doğrulamak için:
composer show nwidart/laravel-modules
Modül yapılandırması config/modules.php dosyasındadır ve modüller proje kökünde Modules/ dizini altında saklanır.
İlk Modülünüzü Oluşturma
# Yeni bir modül için iskelet oluşturma
php artisan module:make MyFeature
# Aynı anda birden fazla modül için iskelet oluşturma
php artisan module:make ModuleA ModuleB ModuleC
# Varsayılan şablon dosyaları olmadan iskelet oluşturma (minimum düzey)
php artisan module:make MyFeature --plain
module:make çalıştırıldıktan sonra modülünüz Modules/MyFeature/ altında oluşturulur ve otomatik olarak kaydedilir.
Modül Şablon Yapısı
Modules/
MyFeature/
app/
Http/
Controllers/ # Rota denetleyicileri
Middleware/ # Modül kapsamlı ara yazılım
Requests/ # Form istek sınıfları
Models/ # Eloquent modelleri
Providers/
MyFeatureServiceProvider.php # Ana servis sağlayıcı (otomatik yüklenir)
RouteServiceProvider.php # routes/web.php + routes/api.php dosyalarını yükler
config/
config.php # Modül düzeyinde yapılandırma
database/
migrations/ # Modül göçleri (temel sistemden izole edilmiş)
seeders/
factories/
resources/
views/ # Blade şablonları
lang/ # Çeviri dizeleri
assets/ # JS/CSS (Vite aracılığıyla derlenir)
routes/
web.php # Web rotaları ('web' ara yazılım grubu altında yüklenir)
api.php # API rotaları ('api' ara yazılım grubu altında yüklenir)
tests/ # Özellik ve birim testleri
module.json # Modül meta verileri ve bağımlılık bildirimi
composer.json # Bu modülün ad alanı için PSR-4 otomatik yükleme
Temel Dosyaların Açıklaması
module.json
Modülün kimliğini ve yükleme sırasını tanımlar:
{
"name": "MyFeature",
"alias": "myfeature",
"description": "Adds custom feature X to LeadHub",
"keywords": [],
"priority": 0,
"providers": [
"Modules\\MyFeature\\Providers\\MyFeatureServiceProvider"
],
"requires": []
}
priority— yükleme sırasını kontrol eder; daha küçük sayı önce yüklenir. Modülünüz başka bir modüle bağımlıysa bunu kullanın.requires— bu modülün bağımlı olduğu modül takma adlarının listesi. LeadHub, yüklemeden önce bağımlılığı zorunlu kılar.
MyFeatureServiceProvider.php
Modülünüzün giriş noktasıdır. Rotaları, ara yazılımları, görünümleri, çevirileri ve bağlamaları burada kaydedin. İskelet sağlayıcı zaten RouteServiceProvider'ı çağırır ve modülün görünümlerini ve çevirilerini otomatik olarak kaydeder.
config/config.php
Modül düzeyinde yapılandırma. Şu şekilde erişilebilir:
config('myfeature.some_key');
Laravel'in standart yapılandırma yayımlama mekanizmasını kullanarak ortam başına yayımlayın ve geçersiz kılın.
Yaygın Artisan Üreteçleri
# Denetleyiciler, Modeller, Göçler
php artisan module:make-controller MyController MyFeature
php artisan module:make-model MyModel MyFeature
php artisan module:make-migration create_my_table MyFeature
# İstekler, Ara Yazılım, Politikalar
php artisan module:make-request StoreMyRequest MyFeature
php artisan module:make-middleware CheckSomething MyFeature
php artisan module:make-policy MyPolicy MyFeature
# İşler, Olaylar, Dinleyiciler, Posta
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 komutları
php artisan module:make-command MyCommand MyFeature
Göçleri ve Tohumları Çalıştırma
Modül göçleri temel sistemden ayrı tutulur. Bunları bağımsız olarak çalıştırın:
# Tüm modülleri göç ettir
php artisan module:migrate
# Belirli bir modülü göç ettir
php artisan module:migrate MyFeature
# Geri al
php artisan module:migrate-rollback MyFeature
# Tohum ekle
php artisan module:seed MyFeature
Modülleri Etkinleştirme ve Devre Dışı Bırakma
Komut satırından:
php artisan module:enable MyFeature
php artisan module:disable MyFeature
php artisan module:list # tüm modülleri ve durumlarını gösterir
Süper Yönetici → Modüller bölümünden: kayıtlı her modülün yanındaki geçiş düğmesini kullanın.
Modül durumu, proje kökündeki modules_statuses.json dosyasında kalıcı olarak saklanır — bu dosyayı sürüm kontrolüne kaydedin.
Çok Kiracılı Yapıyla İlgili Hususlar
LeadHub çok kiracılı bir yapıya sahiptir. Modül oluştururken şunları göz önünde bulundurun:
- Kiracı kapsamlı göçler: Göçünüz kiracı düzeyinde tablolar oluşturuyorsa
module:migratekomutunu bir kiracı bağlamı içine sarın. - Servis Sağlayıcı izolasyonu: Global kapsamı kirletmemek için ara yazılımları, politikaları ve olay dinleyicilerini modülün servis sağlayıcısı içinde kaydedin.
- Özellik geçidi: Modülü global olarak devre dışı bırakmak veya belirli plan kademelerine kısıtlamak için modül etkinleştirme/devre dışı bırakma geçişini LeadHub'ın Plan sistemiyle birleştirin.
İlgili Konular
- Planlar — abonelik kademesi başına hangi özelliklerin kullanılabilir olduğunu kontrol edin
- Sistem Sağlığı — modül yükleme durumunu ve hataları izleyin
- nWidart/laravel-modules belgeleri — tam paket referansı