Nette Documentation Preview

syntax
Migrazione da Twig a Latte
**************************

.[perex]
State convertendo al più moderno Latte un progetto scritto in Twig? Abbiamo uno strumento che semplifica la migrazione. [Provatelo online |https://fiddle.nette.org/twig2latte/].

Potete scaricare lo strumento da [GitHub|https://github.com/nette/latte-tools] oppure installarlo con Composer:

```shell
composer create-project latte/tools
```

Il convertitore non usa semplici sostituzioni con espressioni regolari: usa il vero parser di Twig, il che gli permette di gestire una sintassi complessa a piacere.

Per la conversione da Twig a Latte si usa lo script `twig-to-latte.php`:

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


Conversione
-----------

Il risultato della conversione richiede una revisione manuale, perché la conversione non può essere univoca. Twig usa la sintassi con il punto, dove `{{ a.b }}` può significare `$a->b`, `$a['b']` oppure `$a->getB()`, cosa che non si può distinguere in fase di compilazione. Il convertitore trasforma quindi tutto in `$a->b`.

Alcune funzioni, alcuni filtri o alcuni tag di Twig possono non avere un equivalente diretto in Latte, oppure comportarsi in modo leggermente diverso.


Esempio
-------

Un file di ingresso potrebbe avere questo aspetto:

```twig
{% 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>
```

Dopo la conversione a Latte otteniamo questo template:

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

Migrazione da Twig a Latte

State convertendo al più moderno Latte un progetto scritto in Twig? Abbiamo uno strumento che semplifica la migrazione. Provatelo online.

Potete scaricare lo strumento da GitHub oppure installarlo con Composer:

composer create-project latte/tools

Il convertitore non usa semplici sostituzioni con espressioni regolari: usa il vero parser di Twig, il che gli permette di gestire una sintassi complessa a piacere.

Per la conversione da Twig a Latte si usa lo script twig-to-latte.php:

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

Conversione

Il risultato della conversione richiede una revisione manuale, perché la conversione non può essere univoca. Twig usa la sintassi con il punto, dove {{ a.b }} può significare $a->b, $a['b'] oppure $a->getB(), cosa che non si può distinguere in fase di compilazione. Il convertitore trasforma quindi tutto in $a->b.

Alcune funzioni, alcuni filtri o alcuni tag di Twig possono non avere un equivalente diretto in Latte, oppure comportarsi in modo leggermente diverso.

Esempio

Un file di ingresso potrebbe avere questo aspetto:

{% 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>

Dopo la conversione a Latte otteniamo questo 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>