Migrace z Twigu do Latte
Převádíte projekt z Twigu na modernější a mnohem bezpečnější Latte? Máme pro vás nástroj, který tento proces výrazně zjednoduší. Vyzkoušejte jej online.
Tento užitečný nástroj je dostupný dvěma způsoby:
- Stažením z GitHubu
- Instalací pomocí Composeru:
composer create-project latte/tools
Na rozdíl od jednoduchých nástrojů využívajících regulární výrazy, tento převodník používá sofistikovaný Twig parser. Díky tomu si poradí i s komplexní Twig syntaxí.
Pro převod z Twigu do Latte použijte skript twig-to-latte.php
:
twig-to-latte.php input.twig.html [output.latte]
Konverze a její specifika
Je důležité poznamenat, že převod může vyžadovat ruční úpravy výsledku. Důvodem je, že některé konstrukce
v Twigu nelze jednoznačně převést do Latte. Například, Twig používá tečkovou syntax, kde {{ a.b }}
může
znamenat $a->b
, $a['b']
nebo $a->getB()
. Tento rozdíl nelze rozlišit při
kompilaci, proto převaděč vše převádí na $a->b
.
Některé funkce, filtry nebo tagy v Twigu nemají přímou obdobu v Latte, nebo se mohou chovat mírně odlišně. To je další důvod, proč může být potřeba ruční úprava po automatickém převodu.
Příklad použití
Podívejme se na konkrétní příklad. Níže je ukázka vstupního Twig souboru:
{% use "blocks.twig" %}
<!DOCTYPE html>
<html>
<head>
<title>{{ block("title") }}</title>
</head>
<body>
<h1>{% block title %}My Web{% endblock %}</h1>
<ul id="navigation">
{% for item in navigation %}
{% if not item.active %}
<li>{{ item.caption }}</li>
{% else %}
<li><a href="{{ item.href }}">{{ item.caption }}</a></li>
{% endif %}
{% endfor %}
</ul>
</body>
</html>
Po konverzi do Latte získáme následující šablonu:
{import 'blocks.latte'}
<!DOCTYPE html>
<html>
<head>
<title>{include title}</title>
</head>
<body>
<h1>{block title}My Web{/block}</h1>
<ul id="navigation">
{foreach $navigation as $item}
{if !$item->active}
<li>{$item->caption}</li>
{else}
<li><a href="{$item->href}">{$item->caption}</a></li>
{/if}
{/foreach}
</ul>
</body>
</html>
Hlavní rozdíly a výhody po převodu:
- Změna syntaxe: Twig používá
{% ... %}
pro logiku a{{ ... }}
pro výpis, zatímco Latte používá jednotnou{ ... }
syntaxi - Bloky:
{% block ... %}
se mění na{block ...}
- Cykly:
{% for ... %}
se převádí na{foreach ...}
- Podmínky:
{% if ... %}
zůstává podobné, ale používá se{if ...}
. - Přístup k proměnným: Tečková notace
item.caption
se mění na objektovou notaci$item->caption
- Import:
{% use ... %}
se mění na{import ...}
Tento nástroj významně urychluje a zjednodušuje proces migrace z Twigu na Latte. Umožňuje vám rychle modernizovat vaše projekty a využít všech výhod, které Latte nabízí, včetně jeho výkonu a flexibilnity. Nezapomeňte však po automatickém převodu zkontrolovat a případně upravit výsledný kód, aby plně odpovídal vašim potřebám a specifikům vašeho projektu.