Migración de Twig a Latte
¿Está convirtiendo un proyecto escrito en Twig al más moderno Latte? Tenemos una herramienta para usted que facilitará la migración. Pruébelo en línea.
Puede descargar la herramienta desde GitHub o instalarla usando Composer:
composer create-project latte/tools
El convertidor no utiliza reemplazos simples mediante expresiones regulares, sino que utiliza directamente el parser de Twig, por lo que puede manejar sintaxis de cualquier complejidad.
Para la conversión de Twig a Latte se utiliza el script twig-to-latte.php
:
twig-to-latte.php input.twig.html [output.latte]
Conversión
La conversión presupone una edición manual del resultado, ya que la conversión no se puede realizar de forma inequívoca.
Twig utiliza la sintaxis de puntos, donde {{ a.b }}
puede significar $a->b
, $a['b']
o
$a->getB()
, lo cual no se puede distinguir durante la compilación. Por lo tanto, el convertidor convierte todo a
$a->b
.
Algunas funciones, filtros o etiquetas no tienen equivalente en Latte, o pueden comportarse de manera ligeramente diferente.
Ejemplo
El archivo de entrada puede verse así:
{% 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 la conversión 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>