Blade Template Engine
Blade, Laravel'in güçlü ve basit template engine'idir. PHP kodu ile HTML'i zarif bir şekilde birleştirir.
Temel Syntax
{{-- Yorum satırı --}}
{{-- Değişken yazdırma (XSS korumalı) --}}
{{ $title }}
{{ $user->name }}
{{-- Escape edilmemiş çıktı (dikkatli kullanın!) --}}
{!! $htmlContent !!}
{{-- PHP kodu --}}
@php
$now = now();
$greeting = $now->hour < 12 ? 'Günaydın' : 'İyi günler';
@endphp
{{ $greeting }}, {{ $user->name }}!
Kontrol Yapıları
{{-- If-else --}}
@if($user->isAdmin())
Admin paneline hoş geldiniz!
@elseif($user->isModerator())
Moderatör paneli
@else
Kullanıcı paneli
@endif
{{-- Unless (if not) --}}
@unless($user->isBanned())
Hoş geldiniz!
@endunless
{{-- Isset ve empty kontrolleri --}}
@isset($title)
{{ $title }}
@endisset
@empty($posts)
Henüz yazı yok.
@endempty
{{-- Auth kontrolleri --}}
@auth
Giriş yapmışsınız: {{ auth()->user()->name }}
@endauth
@guest
Giriş Yap
@endguest
Döngüler
{{-- Foreach --}}
@foreach($users as $user)
{{ $user->name }}
@endforeach
{{-- Forelse (boş kontrollü foreach) --}}
@forelse($posts as $post)
{{ $post->title }}
{{ $post->excerpt }}
@empty
Henüz yazı bulunmuyor.
@endforelse
{{-- For --}}
@for($i = 0; $i < 10; $i++)
Sayı: {{ $i }}
@endfor
{{-- While --}}
@while(true)
Sonsuz döngü (dikkat!)
@break
@endwhile
{{-- Loop değişkeni --}}
@foreach($users as $user)
@if($loop->first)
İlk kullanıcı
@endif
{{ $loop->iteration }}. {{ $user->name }}
@if($loop->last)
Son kullanıcı
@endif
@endforeach
{{-- Loop özellikleri:
$loop->index - 0'dan başlayan index
$loop->iteration - 1'den başlayan sayaç
$loop->remaining - Kalan iterasyon
$loop->count - Toplam eleman
$loop->first - İlk mi?
$loop->last - Son mu?
$loop->even - Çift mi?
$loop->odd - Tek mi?
$loop->depth - İç içe döngü derinliği
$loop->parent - Üst döngünün $loop'u
--}}
Layout Sistemi
{{-- resources/views/layouts/app.blade.php --}}
@yield('title', 'Varsayılan Başlık')
@stack('styles')
@yield('content')
@stack('scripts')
{{-- resources/views/pages/home.blade.php --}}
@extends('layouts.app')
@section('title', 'Ana Sayfa')
@push('styles')
@endpush
@section('content')
Ana Sayfa
İçerik buraya gelir.
@endsection
@push('scripts')
@endpush
Component'ler
# Component oluşturma
php artisan make:component Alert
php artisan make:component Forms/Input
// app/View/Components/Alert.php
namespace App\View\Components;
use Illuminate\View\Component;
class Alert extends Component
{
public function __construct(
public string $type = 'info',
public string $message = ''
) {}
public function render()
{
return view('components.alert');
}
}
{{-- resources/views/components/alert.blade.php --}}
{{ $message }}
{{ $slot }}
{{-- Kullanım --}}
Dikkat! Bu bir uyarıdır.
Form Direktifleri
{{-- CSRF Token --}}
{{-- Method Spoofing (PUT, PATCH, DELETE) --}}
{{-- Validation Hataları --}}
@error('email')
{{ $message }}
@enderror
{{-- Tüm hatalar --}}
@if($errors->any())
@foreach($errors->all() as $error)
- {{ $error }}
@endforeach
@endif
Önemli Noktalar
- Blade, Laravel'in template engine'idir
- {{ }} ile değişkenler escape edilir, {!! !!} ile raw output
- @extends ve @section ile layout sistemi kurulur
- @component ve @slot ile yeniden kullanılabilir parçalar
- @if, @foreach, @forelse gibi kontrol direktifleri