Proje: Okul Platform · Hub: Okul Platform — Incidents
Semptom
show.blade.php içinde $discounts koleksiyonu şu şekilde üretilir:
$discounts = collect($allDiscounts)->filter(fn($d) => $d->type !== 'scholarship');Ardından discounts.blade.php içinde @foreach($discounts as $index => $discount) ile item’lar gizlenmeye çalışıldığında hiçbir indirim görünmüyor.
Root Cause
Laravel’in Collection::filter() metodu, filtreleme sonrası orijinal index’leri korur (re-index etmez). Scholarship’ler 0, 2, 4. pozisyonlardaysa, kalan indirimler $index = 1, 3, 5 gibi değerler alır. Tüm bu değerler >= 2 eşiğini aşınca hepsi display:none olur.
Çözüm
@foreach($discounts as $discount) şeklinde key’i atla, $loop->index kullan:
<div style="{{ $loop->index >= 2 ? 'display:none;' : '' }}">Blade’in $loop->index her zaman 0’dan başlayan sıralı sayaçdır, collection key’inden bağımsız.
Ne Zaman Dikkat Et
- Controller veya blade PHP bloğunda
filter(),where(),reject()ile collection süzülüyorsa - Sonuç
@foreachiçinde index bazlı işlem yapıyorsa - Özellikle
$index >= Nhide/show pattern’i kullanıyorsan → her zaman$loop->indexkullan
Related
- 2026-04-14-fe-style-js-locations — mobile/frontend ayrımı