Migration von Twig nach Latte
Stellen Sie ein in Twig geschriebenes Projekt auf das modernere Latte um? Wir haben ein Werkzeug, das Ihnen die Migration erleichtert. Probieren Sie es online aus.
Das Werkzeug können Sie von GitHub herunterladen oder mit Composer installieren:
composer create-project latte/tools
Der Konverter verwendet kein einfaches Ersetzen mit regulären Ausdrücken, sondern nutzt den echten Twig-Parser, wodurch er beliebig komplexe Syntax verarbeiten kann.
Zum Umwandeln von Twig nach Latte dient das Skript twig-to-latte.php:
php twig-to-latte.php input.twig.html [output.latte]
Umwandlung
Die Umwandlung erfordert eine manuelle Nachbearbeitung des Ergebnisses, da sie sich nicht eindeutig durchführen lässt. Twig
verwendet eine Punkt-Syntax, bei der {{ a.b }} sowohl $a->b als auch $a['b'] oder
$a->getB() bedeuten kann, was sich beim Kompilieren nicht unterscheiden lässt. Der Konverter wandelt daher alles
in $a->b um.
Manche Funktionen, Filter oder Tags aus Twig haben in Latte keine direkte Entsprechung oder verhalten sich leicht anders.
Beispiel
Eine Eingabedatei könnte so aussehen:
{% 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>
Nach der Umwandlung nach Latte erhalten wir dieses Template:
{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>