Laravel Blade Template Nedir ? Nasıl Kullanılır ?

Bu yazımızda laravelin template yapısı olan blade template yapısından ve nasıl kullanılacağından bahsedeceğiz.

Blade Template Nedir ?

Blade, Laravel'e dahil olan basit ama güçlü bir template oluşturma motorudur. Aslında tüm blade şablonları düz php kodu ile derlenir ve değiştirilene kadar önbelleğe alınır.

Yani projenin performansına olumsuz yönde etki etmez.

Blade template yapısını resources/views klasöründe .blade.php uzantlı dosyalarımızda kullanırız.

Blade yapısını rotalardan yinlendirdiğimiz view dosyalarında kullanabiliriz.

Route::get('/', function () {
    return view('test', ['isim' => 'Zafer']);
});

Verileri Görüntüleme

View dosyasına gönderdiğimiz verileri süslü parantez içerisine alarak view dosyasında gösterebiliriz. Örnek olarak aşağıdaki route dosyasını tanımladığımızda;

Route::get('/'function () {
    return view('index', ['isim' => 'Zafer']);
});

View dosyamızda isim değişkenini şu şekilde gösterebiliriz:

Hoşgeldiniz: {{$isim}}

Blade Template Json Kullanımı

View dosyamızda javascript ile json verisi oluşturmak isteyebiliriz. Blade Yapısı olmadan bu işlemi öyle yapıyoruz.

<script>
    var app = <?php echo json_encode($dizi); ?>;
</script>

Blade yapısı ile ise şu şekilde yapabiliriz.

<script>
    var app = @json($dizi);
    var app = @json($dizi, JSON_PRETTY_PRINT);
</script>

Html Kodlarının Filtresini Kaldırmak

{{ }} şeklinde değeri ekrana yazdırdığımız zaman eğer içerisinde html kodları varsa bile blade yapısı bunları string olarak okur ve ekrana string olarak yazdırır. ASlında bu komut htmlspecialchars metodu kullanılarak geliştirilmiştir. Bazı durumlarda biz sayfamıza html etiketlerini gönderip tarayıcının bunu string olarak değil de html kodu olarak okumasını isteyebiliriz. Bu durumda blade yapısının {!! !!} özelliğini kullanabiliriz.

Aşağıdaki örneği inceleyelim.

route kodumuz:

Route::get('/'function () {
     $html= "<h4>Zafer</h4>";
    return view('index', ['kisi'=>$html]);
});

index.blade.php view dosyamız:

Hello, {{$kisi}}.
//Çıktı: <h4>Zafer</h4>

Eğer böyle kullanırsak ekranda $html değişkeni direk string olarak yazılacaktır.

Ama blade yapısının html decode komutunu kullanırsak şu şekil bir sonuç elde ederiz.

{!! $kisi !!}
//Çıktı: Zafer

Blade Template İf Kullanımı

Blade yapısı bizlere koşullu ifadeler kullanmak için de kolaylıklar sağlar. @if, @elseif ve @else komutlarını kullanarak kolayca koşullu ifadelerimizi yazabiliriz

@if ($sayi == 10)
    <h4>Ssyı değerimiz 10</h4>   
@elseif($sayi == 15)
    <h4>Sayı değerimiz 15</h4>   
@else
<h4>Sayı değeri bilinmiyor</h4>   
@endif

Ayrıca laravel oturum kontrolü sağlamak için @unless adında güzel bit metot sağlar.

@unless (Auth::check())
     Oturum açmadınız.
@endunless

Blade Yapısında isset ve empty Kullanımı

Php derslerinde anlatmıştım. Gene de kısaca bahsetmek gerekirse isset değişkenin tanımlanıp tanımlanmadığını, empty ise değişkenin değerinin boş olup olmadığını kontrol etmek için kullanılır.

Laravel blade yapısı ise @isset ve @empty komutları ile bu işlemi kolayca yapmamızı sağlayabilir.

@isset($dizi)
   // dizi varsa bura çalışır
@endisset

@empty($dizi)
    //dizi var ancak içeriği boşsa bura çalışır
@endempty

Oturum Kontrolü

@auth ve @guest direktifleri kullanıcının oturum açıp girdiğini mi yoksa misafir mi olduğunu anlamak için kullanılabilir.

@auth
    //Kullanıcı giriş yapmış
@endauth

@guest
    // Kullanıcı giriş yapmamış
@endguest

Blade hasSection Kullanımı

Layout yapısında kullandığımız section tanımlarının var olup olmadığını kontrol etmek için @hasSection direktifini kullanabiliriz.

@hasSection('header')
    <div class="pull-right">
        @yield('header')
    </div>

    <div class="clearfix"></div>
@endif

Blade Yapısında Switch Kullanımı

@Switch, @case, @break, @default ve @endswitch direktifleri kullanılarak anahtar ifadeleri oluşturulabilir:

@switch($i)
    @case(1)
        Birinci case
    @break

    @case(2)
       İkinci case
    @break

    @default
      Varsayılan case 
@endswitch

Blade Yapısında For Döngüsünün Kullanımı

Blade yapısında @for ifadesi ile for döngüsünü kullanabiliriz.

@for ($i = 0; $i < 10; $i++)
    Değer: {{ $i."<br>"}}
@endfor

Blade Yapısında Foreach Döngüsünün Kullanımı

@foreach ifadesi ile foreach döngüsünü kullanabiliriz.

@foreach ($kisileras $kisi)
    <p>Kullanıcı sırası: {{ $kisi->id }}</p>
@endforeach

Blade Yapısında Forelse Kullanımı

Eğer dizi tanımlı değilse uzun uzun if koşulu yazmak yerine @forelse kullanarak bu işlemi tek satırda kontrol edebiliriz.

@forelse ($users as $user)
    <li>{{ $user->isim}}</li>
@empty
    <p>Kullanıcı yok</p>
@endforelse

Blade Yapısında While Döngüsü Kullanımı

@while ifadesi ile while döngüsünü kullanabiliriz.

@while (true)
    <p>Döngü</p>
@endwhile

Döngüleri kullanırken @continue ve @break ifadeleri ile döngüyü sonlandırabilir ya da o anki değeri atlayabiliriz.

@foreach ($users as $user)
    @if ($user->type == 1)
        @continue
    @endif

    <li>{{ $user->name }}</li>

    @if ($user->number == 5)
        @break
    @endif
@endforeach

Bu işlemi daha kısa şekilde halletmek istiyorsak şu şekilde de yazabiliriz.

@foreach ($users as $user)
    @continue($user->type == 1)

    <li>{{ $user->name }}</li>

    @break($user->number == 5)
@endforeach

Blade Yapısı Döngü Değişkenleri

Döngü yaparken, döngünüzün içinde bir $ döngü değişkeni mevcut olacaktır. Bu değişken, geçerli döngü indeksi ve bunun döngü boyunca ilk veya son yineleme olup olmadığı gibi bazı yararlı bilgi bitlerine erişim sağlar:

@php
$dizi = array(12345);
@endphp
@foreach ($dizi as $dizi)
    @if ($loop->first)
        Birinci değer
    @endif

    @if ($loop->last)
        Son değer:
    @endif


    <p>Bu değer {{ $dizi }}</p>
@endforeach

Eğer iç içe döngü kullanıyorsak üstteki döngünün değerine parent nesnesi ile ulaşabiliriz.

@foreach ($users as $user)
    @foreach ($user->posts as $post)
        @if ($loop->parent->first)
            Üstteki döngünün ilk değeri
        @endif
    @endforeach
@endforeach

Blade Yapısında Yorum Ekleme

Yorum satırı eklemek istiyorsak blade yapısında şu komutu kullanabiliriz.

{{-- Burası yorum olarak görünür. --}}

Blade Yapısında include Kullanımı

@include komutu ile view dosyamıza başka bir view dosyasını dahil edebiliriz.

Dahil ettiğimiz view dosyasındaki kodlar bu sayede sayfamıza dahil olmuş olacaktır.

<div>
    @include('header')

    <form>
        <!-- Form Contents -->
    </form>
</div>

Eğer dahil ettiğimiz sayfa bizden veri istiyor ise include metodunun 2. parametresine istenen değeri dizi şeklinde iletebiliriz.

@include('view.isim', ['status' => 'tamam'])

Eğer dahil etmeye çalıştığımız dosya yoksa laravel hata verecektir. Dosyanın varlığını kontrol edip dahil etmek için ise aşağıdaki komutu kullanabiliriz.

@includeIf('view.isim', ['status' => 'tamam'])

Eğer bir işlemin true veya false olma durumuna göre view dahil edeceksek includeWhen komutunu kullanabiliriz.

@includeWhen($boolean, 'view.isim', ['status' => 'tamam'])

@includeUnless($boolean, 'view.name', ['status' => 'tamam'])

Blade Yapısında PHP Kodu Yazmak

Bazı durumlarda view dosyamızda php kodları yazmamız gerekebilir. Bunu @php ifadesi ile yapabiliriz.

@php
     $isim="Zafer Yıldız"
@endphp

YAZAR HAKKINDA

26 Yaşında. Araştırmayı seven, bir şeyler öğretmeye meraklı bir Bilgisayar Mühendisi

0 YORUM

Bu konuya henüz yorum yapılmamış

Yorum Yap

@COPYRIGHT KodlamakLazım Tüm Hakları Saklıdır.