Soru: Hero widget için HTML yapısını sabit Blade view dosyasında mı tutalım, yoksa database'den mi çekelim?
Analiz Kapsamı: WidgetManagement sistemi 3 farklı yaklaşım sunuyor. Her birinin avantaj, dezavantaj ve kullanım senaryolarını inceledik.
Hedef: Hero widget için en uygun yaklaşımı belirlemek ve implementation stratejisi oluşturmak.
Blade View Dosyası
HTML yapısı sabit Blade dosyasında saklanır. İçerik Handlebars değişkenleri ile dinamik.
Nasıl Çalışır?
Widget Tablosunda HTML
HTML yapısı Widget tablosunun content_html alanında saklanır. Tüm tenant'lar için aynı yapı.
Nasıl Çalışır?
Her Tenant Kendi HTML'i
Her tenant tamamen farklı HTML yapısı kullanabilir. Maksimum esneklik.
Nasıl Çalışır?
| Özellik | FILE Tipi | CUSTOM (Merkezi) | TenantWidget CUSTOM |
|---|---|---|---|
| HTML Konumu | Blade dosyası | Widget.content_html | TenantWidget.custom_html |
| Versiyon Kontrolü | ✅ Git ile tam kontrol | ❌ Database'de, git yok | ❌ Database'de, git yok |
| Kod Editörü | ✅ VSCode, PHPStorm | ⚠️ Admin panel textarea | ⚠️ Admin panel textarea |
| Syntax Highlight | ✅ Tam destek | ❌ Basit textarea | ❌ Basit textarea |
| Blade Directives | ✅ @if, @foreach, @include | ❌ Sadece Handlebars | ❌ Sadece Handlebars |
| PHP Kodu | ✅ Kullanılabilir | ❌ Güvenlik riski | ❌ Güvenlik riski |
| Handlebars Desteği | ✅ Destekler | ✅ Destekler | ✅ Destekler |
| Admin Düzenleme | ❌ Dosya erişimi gerekir | ✅ Admin panelden | ✅ Admin panelden |
| Tenant Özelleştirme | ⚠️ Settings ile sınırlı | ⚠️ Settings ile sınırlı | ✅ Tam özelleştirme |
| HTML Yapısı Değişikliği | ❌ Dosyayı düzenle | ✅ Admin panelden | ✅ Tenant'a özel |
| Performance | ⚡ En hızlı (OPcache) | ⚠️ DB query | ⚠️ DB query |
| Cache | ✅ Blade cache + OPcache | ⚠️ Widget cache | ⚠️ Widget cache |
| Deployment | ✅ Git pull yeterli | ⚠️ DB sync gerekir | ⚠️ DB sync gerekir |
| Rollback | ✅ Git checkout | ⚠️ DB backup | ⚠️ DB backup |
| Güvenlik | ✅ Yüksek (server-side) | ⚠️ XSS riski var | ⚠️ XSS riski yüksek |
| Karmaşıklık | 🟢 Basit | 🟡 Orta | 🔴 Karmaşık |
| Kullanım Senaryosu | Standart widget'lar | Basit özelleştirmeler | Tenant-specific tasarımlar |
Hero Widget Gibi Standart Komponentler İçin İdeal!
Basit, Sık Değişen Widget'lar İçin Uygun
Dikkatli Kullanılmalı!
| Özellik | Handlebars (CUSTOM) | Blade (FILE) |
|---|---|---|
| Değişken | {{widget.title}} | {{ $settings['title'] }} |
| Koşul | {{#if widget.show}}...{{/if}} | @if($settings['show'])...@endif |
| Loop | {{#each items}}...{{/each}} | @foreach($items as $item)...@endforeach |
| PHP Kodu | ❌ Desteklenmez | ✅ {{ route('shop') }} |
| Include | ❌ Desteklenmez | ✅ @include('partial') |
| Component | ❌ Desteklenmez | ✅ <x-button /> |
Neden FILE Tipi?
Implementation Stratejisi:
blocks/hero/ixtif-hero/view.blade.phpHero gibi kritik komponentler için ÖNERİLMEZ. Sadece basit banner, duyuru gibi sık değişen, güvenlik riski düşük içerikler için CUSTOM kullanılabilir.
Karar: Hero widget için FILE tipi widget kullanacağız.
Önceki Plan Geçerli: Hero Widget Implementation Plan dokümanındaki adımları takip edeceğiz.
Değişiklik: Plan zaten FILE tipi için hazırlanmıştı, herhangi bir değişiklik gerekmiyor!
blocks/hero/ixtif-hero/view.blade.php