TAMAMLANDI 13 Ocak 2026

Checkout Sayfası Düzeltmeleri

Muzibu.com.tr checkout sayfasındaki form düzenleme sorunlarının giderilmesi

Basit Anlatım (Herkes İçin)

Sorun neydi? Checkout sayfasında fatura bilgilerini veya adresleri düzenlerken birkaç sorun vardı:

  • TC Kimlik numarası kaydedilmiş olsa bile formlarda görünmüyordu
  • Bir profili veya adresi düzenleyip "Kaydet" dedikten sonra altında boş bir form daha açılıyordu
  • Adres düzenlerken ilçe listesi boş geliyordu, seçim yapılamıyordu

Ne değişti? Artık:

  • TC Kimlik numarası doğru şekilde görüntüleniyor
  • Düzenleme formları kaydet sonrası düzgün kapanıyor
  • Adres düzenlerken ilçe listesi otomatik yükleniyor

Teknik Detaylar (Geliştiriciler İçin)

Düzeltilen dosyalar:

  • Modules/Cart/App/Http/Livewire/Front/CheckoutPage.php
  • Modules/Cart/resources/views/livewire/front/checkout-page.blade.php
1

TC Kimlik Numarası Görüntüleme

Bireysel fatura profili seçildiğinde TC Kimlik numarası form alanına aktarılmıyordu.

Eski kod (Satır 552-556):

} else {
    // Bireysel - legacy alanları temizle
    $this->billing_company_name = '';
    $this->billing_tax_number = '';  // BOŞ bırakılıyordu
    $this->billing_tax_office = '';
}

Yeni kod:

} else {
    // Bireysel - TC Kimlik No'yu aktar
    $this->billing_company_name = '';
    $this->billing_tax_number = $profile->identity_number ?? '';
    $this->billing_tax_office = '';
}
2

Fatura Profili Düzenleme Sonrası Boş Form Sorunu

Düzenleme sonrası form kapanmıyordu çünkü Alpine.js'in lokal isEditing state'i Livewire component yeniden render edildiğinde sıfırlanıyordu.

Eski yaklaşım:

x-data="{ isEditing: false }"
x-show="isEditing"  // Alpine state - Livewire render'da sıfırlanır

Yeni yaklaşım:

// Livewire property kullanılıyor - render'da korunur
x-show="$wire.edit_billing_profile_id == {{ $profile->billing_profile_id }}"

// Edit butonu artık Livewire property'sini kontrol ediyor
if ($wire.edit_billing_profile_id == profileId) {
    $wire.set('edit_billing_profile_id', null);
} else {
    $wire.call('editBillingProfile', profileId);
}
3

Adres Düzenleme - Boş Form ve İlçe Listesi Sorunu

Aynı sorun adres düzenlemede de vardı. Ayrıca $wire.set() kullanıldığı için Livewire'ın updated hook'ları tetiklenmiyordu ve ilçeler yüklenmiyordu.

Eski yaklaşım:

// Manuel set - updated hook'ları tetiklenmiyor
$wire.set('new_billing_address_city', '{{ $addr->city }}');
$wire.set('new_billing_address_district', '{{ $addr->district }}');
// İlçe listesi YÜKLENMİYOR!

Yeni yaklaşım:

// PHP metodu çağrılıyor - ilçeler otomatik yükleniyor
$wire.call('editAddress', {{ $addr->address_id }}, 'billing');

// PHP tarafında editAddress metodu ilçeleri yüklüyor:
$this->billingDistricts = $this->getDistrictsByCity($address->city);
$this->new_billing_address_district = $address->district;

Düzeltilen Bölümler

Fatura Bilgileri

  • TC Kimlik görüntüleme
  • Profil düzenleme formu
  • Kaydet sonrası form kapanma

Teslimat Adresi

  • Adres düzenleme formu
  • İlçe listesi yükleme
  • Kaydet sonrası form kapanma

Fatura Adresi (Fiziksel)

  • Adres düzenleme formu
  • İlçe listesi yükleme
  • Kaydet sonrası form kapanma

Fatura Adresi (Dijital)

  • Adres düzenleme formu
  • İlçe listesi yükleme
  • Kaydet sonrası form kapanma

Sonuç

Checkout sayfasındaki tüm inline düzenleme formları artık Livewire property'leri ile senkronize çalışıyor. Bu sayede:

  • Formlar açıldığında veriler düzgün yükleniyor (TC Kimlik, ilçe listesi vb.)
  • Kaydet işlemi sonrası formlar düzgün kapanıyor
  • Livewire component yeniden render edilse bile form durumu korunuyor