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ç @foreach içinde index bazlı işlem yapıyorsa
  • Özellikle $index >= N hide/show pattern’i kullanıyorsan → her zaman $loop->index kullan