Ana içeriğe geç

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.json aracı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:migrate komutunu 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​