Symfony Twig Nasıl Kullanılır ?

Murat Çakmak
2 min readJun 4, 2022

Twig, php için geliştirilmiş bir template engine’dir. Twig ile daha pratik, okunaklı ve hızlı front-end tarafını yapabilmekteyiz.

symfony twig nasıl kullanılır

Symfony Twig ve Laravel Blade Template Engine basitçe nasıl çalışır ?
Kendi belirledikleri kodlara göre kendi syntax’nı üretirler ve çalıştırıldığında bu kodlar doğal olarak PHP koduna çevrilir.
Bu syntax’lar sihirbazlıklarla doludur. Bu yüzden kod yazma hızımızı ve okunabilirliği arttırmaktadır.

Laravel’deki blade yapısını bilenler Twig yapısına çok hızlı aşina olacaklardır.

Twig hakkında tüm detaylı bilgilere symfony’nin hazırladığı dökümanı inceleyebilirsiniz: https://twig.symfony.com/

Projeye dahil etmek için

composer require "twig/twig:^3.0"

Hem symfony Twig ve hemde Laravel blade karşılaştırmalarıyla aşağıdaki kod örneklerini inceleyebilirsiniz:

Yorum satırı belirtme

//Laravel
{{-- Comment --}}
//Symfony
{# comment #}

Yer işaretleme

//Laravel
@section('section_name')
@endsection
//Symfony
{% block <block_name> %}
Default Content
{% endblock %}

Değişkeni ekrana bastırma

//Laravel'e göre farkı değişkene '$' koyulmasıdır.
{{ var }}
//Html kodların &gt gibi kodlarır çeviri yani htmlspecialchars ile çalıştırır.
{{ var|escape }}
//Biçimlendirme / Filtreleme işlev örneği
{{ 'TWIG'|lower }}
{{ now|date('d/m/Y') }}

Değişken Tanımlama

//Laravel
@php
$foo = 'foo';
@endphp
//Symfony
{% set foo = 'foo' %}

Şart belirtme

//Laravel
@if(true)
true
@else
false
@endif
//Symfony
{% if true %}
true
{% elseif ... %}
{% else %}
false
{% endif %}

For Döngüsü

//Laravel
@forelse ($users as $user)
{{ $user->name }}
@empty
No users
@endforelse
//Symfony//For kullanımda değer yoksa yapılacak şekilde kullanım
{% for user in users %}
* {{ user.name }}
{% else %}
No users have been found.
{% endfor %}
//Array den key, value alarak kullanım
{% for key, value in array %}
{{ key }}: {{ value }}
{% endfor %}
//Sayısal olarak kullanım
{% for i in 0..10 %}
* {{ i }}
{% endfor %}
//A-z kullanım
{% for letter in 'a'..'z' %}
* {{ letter }}
{% endfor %}

While Döngüsü

//Laravel
@while(true)
@endwhile
//Symfony'de while döngüsü yoktur ancak if ile şart koyularak döngünün bitişini belirleyebilirsiniz.
{% for el in collection if cnt > 0 %}
{% endfor %}

Foreach Döngüsü

//Laravel
@foreach ($users as $user)
<p>This is user {{ $user->id }}</p>
@endforeach
//Symfony'de foreach diye anahtar yoktur aynı işlevi yapacak şekilde bu şekilde kullanılmaktadır.
{% for user in users %}
<li>{{ user.username|e }}</li>
{% endfor %}

Belirli şablon üzerine değişiklik yapma

//Laravel ile çok benzerdir.
@extends('layouts.app')
@section('title', 'Page Title')
//Symfony extends
{% extends "layout.html" %}
{% block content %}
Content of the page...
{% endblock %}

Bir görünümü Include edilmesi

//Laravel
@include('default-navigation')
//Symfony
{% include 'test.html.twig' %}

Daha fazla bilgi için inceleyebilirsiniz:
https://twig.symfony.com/doc/3.x

--

--