Muzibu.com.tr checkout sayfasındaki form düzenleme sorunlarının giderilmesi
Sorun neydi? Checkout sayfasında fatura bilgilerini veya adresleri düzenlerken birkaç sorun vardı:
Ne değişti? Artık:
Düzeltilen dosyalar:
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 = '';
}
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);
}
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;
Checkout sayfasındaki tüm inline düzenleme formları artık Livewire property'leri ile senkronize çalışıyor. Bu sayede: