Problem
Problem
Laravel 12 ve PHP 8.5 kullanarak çalışırken aşağıdaki hata ile karşılaştım; bu makale, bu duruma düşenlerin zaman kazanması için yardımcı olabilir.
Blade’de bir @foreach döngüsünün içinde bir @else yazdım ve koleksiyon boşken bir yedek gösterilmesini bekliyordum. Bunun yerine, aşağıdaki hatayı aldım:
ParseError
syntax error, unexpected token “else”, expecting end of file
Neden Oluyor?
Neden Oluyor?
Blade’deki @foreach, doğrudan yerel PHP foreach döngüsüne derlenir. Ancak PHP’nin foreach‘inin bir else dalı yoktur; durum budur. Blade bu duruma bir ekleme yapmaz, yazdığınızları doğrudan PHP olarak geçirir, bu da derlenen çıktının geçersiz PHP olmasına neden olur.
Çözüm
Çözüm
Laravel, bu durum için tam olarak hazırlanmış bir direktife sahiptir: @forelse.
@forelse ($items as $item)
{{ $item->name }}
@empty
Öğe bulunamadı.
@endforelse
Yapmanız gereken değişiklikler:
@foreach yerine @forelse, @else yerine @empty, ve @endforeach yerine @endforelse kullanmak. Bu, sorunun çözümüdür.
Daha ayrıntılı bir inceleme (derlenen PHP çıktısıyla birlikte neden bu hatanın oluştuğunu gösteren) için buraya göz atabilirsiniz: Laravel Blade: @else Hatası Çözümü
Diğerlerinin de bu durumu yaşayıp yaşamadığını merak ediyorum; @forelse direktifi direkt olarak aklınıza geldi mi yoksa bulmak için bir süre düşündünüz mü?

Kaynak: Orijinal Makale


