Nette Documentation Preview

syntax
Migration von Twig zu Latte
***************************

.[perex]
Migrieren Sie ein in Twig geschriebenes Projekt auf das modernere Latte? Wir haben ein Tool, das Ihnen die Migration erleichtert. [Probieren Sie es online |https://twig2latte.nette.org] aus.

Sie können das Tool von [GitHub |https://github.com/nette/latte-tools] herunterladen oder es mit Composer installieren:

```shell
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:

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


Konvertierung .[#toc-conversion]
--------------------------------

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 .[#toc-example]
------------------------

Die Eingabedatei könnte wie folgt aussehen:

```latte
{% 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:

```latte
{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>
```

{{leftbar: /@left-menu}}

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>