Varsayılan değerler görünmüyor
Form yüklendiğinde select ve number alanları boş
Değişiklikler kayıt olmuyor
Save işlemi başarılı görünüyor ama DB ye yazılmıyor
Sayfa yenilemede kaybolma
F5 sonrası yeni değerler görünmüyor
Ayar tanımları (label, type, options, default_value)
Grup tanımları + Layout JSON
Sadece Tenant 1 (Central) için değerler
Tenant 1001 için değerler (sadece 3 kayıt var!)
Setting ID 211, 212 için hiç kayıt yok
Central DB:
settings (211, 212) → Tanımlar ✓settings_groups (23) → Layout ✓settings_values → Tenant 1001 için YOK!
Tenant DB (muzibu):
settings_values → Sadece 3 kayıt ID 1: setting_id=1 (site_name) ID 2: setting_id=90 ID 3: setting_id=91 Setting 211, 212 → KAYIT YOK!
Yapılan:
1. Settings çekiliyor (Setting::where('group_id', 23)->get())
2. Her setting için SettingValue::where('setting_id', X)->first()
3. Value varsa → value, yoksa → default_value
4. $this->values[$settingId] = finalValue
🚨 Problem:
Setting ID 211, 212 için SettingValue YOK!
→ default_value kullanılmalı
→ Ancak Blade template default_value göstermiyor!
→ Select placeholder="Seçiniz" boş kalıyor
select.blade.php (Satır 46-58):
@php
// Mevcut değeri belirle
if(isset($values[$fieldName])) {
$fieldValue = $values[$fieldName]; ← BU ÇALIŞIYOR
} elseif(isset($settings) && is_object($settings)) {
$cleanFieldName = str_replace('setting.', '', $fieldName);
$fieldValue = $settings[$cleanFieldName] ?? $defaultValue; ← BU ÇALIŞMIYOR
} else {
$fieldValue = $defaultValue; ← BU ÇALIŞMIYOR
}
// values için varsayılan değeri ayarla
if (!isset($values[$fieldName])) {
$values[$fieldName] = $fieldValue; ← BU ÇALIŞMIYOR (Livewire wire:model.defer)
}
@endphp
🚨 Sorun:
1. $values[$fieldName] key olarak 'auth_subscription' kullanılıyor
2. Ancak mount() içinde $values[$settingId] → numeric key (211, 212)
3. String key ile numeric key EŞLEŞMIYOR!
4. Blade: isset($values['auth_subscription']) → FALSE
5. Sonuç: $fieldValue hiç ayarlanmıyor → SELECT BOŞ!
ValuesComponent::save() (Satır 306-454):
foreach ($this->values as $settingId => $value) {
// String key'leri filtrele (sadece numeric ID'leri işle)
if (!is_numeric($settingId)) {
continue; ← BU ATLIYOR!
}
$setting = Setting::find($settingId);
...
$settingValue = SettingValue::updateOrCreate(
['setting_id' => $settingId],
['value' => $value]
);
}
🚨 Sorun:
1. Layout form elementi wire:model.defer="values.auth_subscription" kullanıyor
2. Değişiklik yapınca: $values['auth_subscription'] = '1'
3. Ancak save() içinde: if (!is_numeric($settingId)) continue;
4. String key ATLANIYOR! → Database'e hiç yazılmıyor!
ValuesComponent::updatedValues() (Satır 67-102):
public function updatedValues($value, $key)
{
// String key ise numeric ID'ye çevir ve sync et
if (!is_numeric($key)) {
$setting = Setting::where('key', $key)->first(); ← BU ÇALIŞMIYOR!
if ($setting) {
$numericKey = $setting->id;
$this->values[$numericKey] = $value; ← İKİLİ KEY
$this->values[$key] = $value;
}
}
}
🚨 Kritik Problem:
1. Layout form: name="auth_subscription"
2. Ancak Setting key: "auth_subscription_auth_subscription" (Prefix eklenmiş!)
3. Setting::where('key', 'auth_subscription') → NULL!
4. Numeric key sync ÇALIŞMIYOR!
5. Sonuç: Değer sadece string key'de kalıyor, save() atlanıyor!
Layout JSON:
name: "auth_subscription"
Database (settings tablosu):
key: "auth_subscription_auth_subscription"
→ Bu yüzden Setting::where('key', 'auth_subscription')->first() → NULL!
Sistem hem numeric ID hem string key kullanıyor:
$values[211] → mount() tarafında numeric key
$values['auth_subscription'] → Layout form tarafında string key
select.blade.php içinde:
1. $values[$fieldName] kontrol ediliyor
2. Yoksa $settings[$cleanFieldName] kontrol ediliyor
3. Ancak $settings bir Collection veya array değil, başka bir yapı!
4. is_object($settings) kontrolü yanlış çalışıyor
→ Sonuç: default_value hiç kullanılmıyor!
if (!is_numeric($settingId)) continue;
→ Bu satır string key'leri atlıyor!
→ Layout form'daki değişiklikler database'e yazılmıyor!
1️⃣ mount() çalışıyor
→ Settings çekiliyor (ID: 211, 212)
→ SettingValue sorgusu: NULL (kayıt yok)
→ $values[211] = 'disabled' (default_value)
→ $values[212] = '1' (default_value)
2️⃣ select.blade.php çalışıyor
→ $fieldName = 'auth_subscription' (Layout JSON'dan)
→ Kontrol: isset($values['auth_subscription']) → FALSE!
→ Fallback kontrol başarısız
→ SELECT BOŞ GÖRÜNÜYOR!
3️⃣ Select'ten "Açık" seçiliyor
→ wire:model.defer: $values['auth_subscription'] = '1'
→ updatedValues() tetikleniyor
→ Setting::where('key', 'auth_subscription') → NULL!
→ Sync ÇALIŞMIYOR!
→ Değer sadece: $values['auth_subscription'] = '1'
4️⃣ save() çalışıyor
→ foreach: $settingId = 'auth_subscription'
→ if (!is_numeric($settingId)) continue;
→ String key ATLANIYOR!
→ Database'e HİÇ YAZILMIYOR!
5️⃣ mount() tekrar çalışıyor
→ SettingValue sorgusu: NULL (hala yok!)
→ $values[211] = 'disabled' (default_value)
→ Değişiklikler KAYBOLDU!
Setting Key Uyumsuzluğu
Layout JSON: auth_subscription vs Database: auth_subscription_auth_subscription
Dual Key Sync Hatası
Numeric key (211) ile string key ('auth_subscription') senkronize olmuyor
Default Value Render Hatası
Blade template default_value'yu gösteremiyor
Save Filtreleme Hatası
String key'ler save() içinde atlanıyor