Laravel: Sıfırdan İleri Seviye

Ders 5/17 1 saat

Blade Template Engine

Blade syntax, layout sistemi, component'ler ve direktifler.

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')
@include('partials.footer')
@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 --}}
@csrf ...
{{-- Method Spoofing (PUT, PATCH, DELETE) --}}
@csrf @method('PUT') ...
{{-- 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