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>