Nette Documentation Preview

syntax
Migración de Twig a Latte
*************************

.[perex]
¿Estás migrando un proyecto escrito en Twig al más moderno Latte? Tenemos una herramienta para facilitar la migración. [Pruébala en línea |https://twig2latte.nette.org].

Puedes descargar la herramienta desde [GitHub |https://github.com/nette/latte-tools] o instalarla usando Composer:

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

El conversor no utiliza sustituciones simples de expresiones regulares, sino que utiliza directamente el analizador sintáctico de Twig, por lo que puede manejar cualquier sintaxis compleja.

Se utiliza un script `twig-to-latte.php` para convertir de Twig a Latte:

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


Conversión .[#toc-conversion]
-----------------------------

La conversión requiere la edición manual del resultado, ya que la conversión no puede hacerse de forma inequívoca. Twig utiliza la sintaxis de puntos, en la que `{{ a.b }}` puede significar `$a->b`, `$a['b']` o `$a->getB()`, que no pueden distinguirse durante la compilación. Por ello, el conversor convierte todo a `$a->b`.

Algunas funciones, filtros o etiquetas no tienen equivalente en Latte, o pueden comportarse de forma ligeramente diferente.


Ejemplo .[#toc-example]
-----------------------

El archivo de entrada podría tener este aspecto:

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

Después de convertir a Latte, obtenemos esta plantilla:

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

Migración de Twig a Latte

¿Estás migrando un proyecto escrito en Twig al más moderno Latte? Tenemos una herramienta para facilitar la migración. Pruébala en línea.

Puedes descargar la herramienta desde GitHub o instalarla usando Composer:

composer create-project latte/tools

El conversor no utiliza sustituciones simples de expresiones regulares, sino que utiliza directamente el analizador sintáctico de Twig, por lo que puede manejar cualquier sintaxis compleja.

Se utiliza un script twig-to-latte.php para convertir de Twig a Latte:

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

Conversión

La conversión requiere la edición manual del resultado, ya que la conversión no puede hacerse de forma inequívoca. Twig utiliza la sintaxis de puntos, en la que {{ a.b }} puede significar $a->b, $a['b'] o $a->getB(), que no pueden distinguirse durante la compilación. Por ello, el conversor convierte todo a $a->b.

Algunas funciones, filtros o etiquetas no tienen equivalente en Latte, o pueden comportarse de forma ligeramente diferente.

Ejemplo

El archivo de entrada podría tener este aspecto:

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

Después de convertir a Latte, obtenemos esta plantilla:

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