Template (Edge) Plugin

Template plugini, view katmanındaki işleri kolaylaştırarak daha kolay okunur kod yazmayı sağlayan güçlü bir şablon motorudur. Söz dizimi olarak Laravel içerisinde bulunan Blade'e oldukça benzer. Edge tema motoru için oluşturulacak view dosyaları .edge.php ya da .blade.php uzantılarından birine sahip olmalı ve /app/view dizininde yer almalıdırlar.

Controller İçinde Kullanımı

Edge ile oluşturulan view dosyalarını sisteme dahil etmek için view() methodu kullanılır. Dosyanın yolu ve gönderilecek verileri içeren dizi değişkeni parametre olarak alır.

Parametre Veri Tipi Açıklama
$file_path String Edge dosyasının yolu
$data Array Edge dosyasına gönderilecek veriler
// "/app/view" dizini içerisindeki index.edge.php dosyasını kullanır.
return view('index', ['title' => 'Sayfa Başlığı']);

Edge dosyaları, /app/view dizinindeki herhangi bir başka dizin içerisinde yer alıyorsa, dosya yolu verilirken ayraç olarak . kullanılır.


// "/app/view/admin" dizini içerisindeki index.edge.php dosyasını kullanılır.
return view('admin.index', ['title' => 'Dashboard']);

Verilerin Gösterimi

Edge view'a gönderilen verileri ekrana yazdırmak için 2 yöntem kullanılır;

1. Eğer gönderilen veri escape edilerek ekrana yazdırılmak isteniyorsa {{ }} tagları arasına alınır. Bu yöntemde eğer değişken içerisinde html kodları bulunuyorsa, browser tarafından yorumlanmadan ekrana basılır.

Örnek Controller içeriği

$data['title'] = '<title>Sayfa Başlığı</title>';
return view('index', $data);

Örnek "index.edge.php" içeriği

{{ $title }} // Ekran çıktısı <title>Sayfa Başlığı</title> olacaktır. Browser bunu html olarak algılamaz.

2. Eğer gönderilen veri escape edilmeden ekrana yazdırılmak isteniyorsa {!! !!} tagları arasına alınır. Bu yöntemde eğer değişken içerisinde html kodları bulunuyorsa, browser tarafından yorumlanarak ekrana basılır.

Örnek Controller içeriği

$data['title'] = '<title>Sayfa Başlığı</title>';
return view('index', $data);

Örnek "index.edge.php" içeriği

{!! $title !!} // Sayfaya HTML title tagları arasında dahil edilir. Böylece browserdaki sayfa başlığı değişkene atanan değer olarak görünür.

Layout (Sayfa Düzeni) Tanımlama

Edge ile sayfalar bölümlere ayırabilir, bir master sayfa oluşturulup diğer sayfalar buradan extend edilerek türetilebilir.

Örneğin tüm sayfalarda bulunacak olan ve değişmeyen kısımlar bir master sayfada toplanır ve diğer sayfalar buradan extend edilir.

master.edge.php

<!doctype html>
<html>
    <head>
        <title>{{ $title }}</title>
        @yield('css')
    </head>
    <body>
        @yield('content')

        @yield('js')
    </body>
</html>

index.edge.php

@extends('master')

@section('css')
    {!! get_css('style') !!}
@endsection

@section('content')
    <div class="wrapper">
        <p>Merhaba Dünya!</p>
    </div>
@endsection

@section('js')
    {!! get_js('jquery.min') !!}
@endsection

Yukarıdaki örnekte master.edge.php içerisinde bir HTML çatı sayfası görülmektedir. Bu sayfadaki @yield deyimi, extend edilen sayfalardaki sectionları dahil etmek için kullanılır. Örnekte css, content ve js sectionları master çatı sayfaya dahil edilmiştir.

index.edge.php sayfasında ise öncelikle çatı olarak kullanılacak sayfa belirlenir. Bunun için @extends deyimi kullanılır. Daha sonra çatı sayfasında @yield deyimi ile dahil edilen section bölümleri oluşturulur.

Örnekte görüldüğü üzere, css section'ında sayfaya dahil edilecek css dosyaları belirlenir. content section'ında sayfa içeriği bulunur. js section'ında ise sayfaya dahil edilecek javascript dosyaları belirlenir.

Loop (Döngü) Yapıları

Edge motorunda PHP döngü yapıları da kullanılabilir. Tüm döngüler PHP dilindeki kullanımıyla aynı şekildedir.

1. FOR Döngüsü

@for ($i = 0; $i < 10; $i++)
    Sıradaki değer {{ $i }}
@endfor

2. FOREACH Döngüsü

@foreach ($users as $user)
    

Kullanıcı adı: {{ $user->name }}

@endforeach

3. FORELSE Yapısı

@forelse ($articles as $article)
    
  • {{ $article->title }}
  • @empty

    Makale bulunamadı

    @endforelse

    4. WHILE Döngüsü

    @while (true)
        

    Burası sonsuz döngü.

    @endwhile

    5. BREAK ve CONTINUE Deyimleri

    Bir döngüden çıkmak ya da devam etmek için @break ve @continue deyimleri kullanılır. Aşağıdaki örnekte kullanıclar @foreach ile döngüye sokulur. Eğer kullanıcı yok ise @continue ile döngüye başlamadan çıkılır ve sıradaki işleme devam edilir. Kullanıcı var ise döngü başlatılır. Kullanıcı id'si 10 ya da üzeri ise döngü durdurulur ve sıradaki işleme devam edilir.

    @foreach ($users as $user)
    
        @if (!$user->id)
            @continue
        @endif
    
        

    Kullanıcı adı: {{ $user->name }}

    @if ($user->id >= 10) @break @endif @endforeach

    @break ve @continue deyimlerinin kısa kullanımı aşağıdaki gibidir;

    @continue(!$user->id) // Kullanıcı yok ise döngüyü başlatmadan devam et.
    
    @break($user->id >= 10) // Döngüde sıradaki kullanıcı id'si 10 ya da üzeri ise döngüden çık ve devam et.

    Koşul (IF) Yapıları

    Edge motorunda PHP koşul (IF) yapıları kullanılabilir.

    1. IF, ELSE, ELSEIF Deyimleri

    @if (count($flower) == 1)
        Bir adet çiçeğim var!
    @elseif (count($flower) > 1)
        Bir sürü çiçeğim var!
    @else
        Hiç çiçeğim yok!
    @endif

    2. UNLESS Deyimi

    @unless ($user->isAdmin())
        Giriş yapılmadı
    @endunless

    Native PHP Kodu Yazma

    Edge ile oluşturulan view dosyalarında native PHP kodu yazmak için @php ... @endphp tagları kullanılır.

    Aşağıdaki örnekte bir değişken tanımlanıp, atanan değer ekrana yazılıyor;

    @php
    $degisken = 'Merhaba Dünya!";
    @endphp
    
    // Ekrana 'Merhaba Dünya!' basılır. 
    {{ $degisken }}