Migration von Twig zu Latte
Migrieren Sie ein in Twig geschriebenes Projekt auf das modernere Latte? Wir haben ein Tool, das Ihnen die Migration erleichtert. Probieren Sie es online aus.
Sie können das Tool von GitHub herunterladen oder es mit Composer installieren:
composer create-project latte/tools
Der Konverter verwendet keine einfachen Ersetzungen durch reguläre Ausdrücke, sondern nutzt direkt den Twig-Parser, so dass er jede komplexe Syntax verarbeiten kann.
Ein Skript twig-to-latte.php
wird für die Konvertierung von Twig nach Latte verwendet:
twig-to-latte.php input.twig.html [output.latte]
Konvertierung
Die Konvertierung erfordert eine manuelle Bearbeitung des Ergebnisses, da die Konvertierung nicht eindeutig erfolgen kann. Twig
verwendet eine Punktsyntax, wobei {{ a.b }}
$a->b
bedeuten kann, $a['b']
oder
$a->getB()
bedeuten kann, was beim Kompilieren nicht unterschieden werden kann. Der Konverter wandelt daher alles
in $a->b
um.
Einige Funktionen, Filter oder Tags haben keine Entsprechung in Latte oder verhalten sich leicht anders.
Beispiel
Die Eingabedatei könnte wie folgt 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 Konvertierung in Latte erhalten wir diese Vorlage:
{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>