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>
Version: 3.x