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