Migration von Twig nach Latte

Konvertieren Sie ein Projekt, das in Twig geschrieben ist, in das modernere Latte? Wir haben ein Werkzeug für Sie, das die Migration erleichtert. Probieren Sie es online aus.

Sie können das Werkzeug von GitHub herunterladen oder mit Composer installieren:

composer create-project latte/tools

Der Konverter verwendet keine einfachen Ersetzungen mit regulären Ausdrücken, sondern nutzt direkt den Twig-Parser, sodass er mit jeder noch so komplexen Syntax umgehen kann.

Zur Konvertierung von Twig nach Latte dient das Skript twig-to-latte.php:

twig-to-latte.php input.twig.html [output.latte]

Konvertierung

Die Konvertierung erfordert eine manuelle Anpassung des Ergebnisses, da die Konvertierung nicht eindeutig durchgeführt werden kann. Twig verwendet die Punkt-Syntax, wobei {{ a.b }} $a->b, $a['b'] oder $a->getB() bedeuten kann, was bei der Kompilierung nicht unterschieden werden kann. Der Konverter konvertiert daher alles in $a->b.

Einige Funktionen, Filter oder Tags haben kein Äquivalent in Latte oder können sich geringfügig anders verhalten.

Beispiel

Die Eingabedatei kann zum Beispiel 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 Konvertierung in 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>
Version: 3.0