Migrarea de la Twig la Latte
Convertiți un proiect scris în Twig la Latte, mai modern? Avem pentru dvs. un instrument care vă va facilita migrarea. Încercați online.
Instrumentul îl puteți descărca de pe GitHub sau instala folosind Composer:
composer create-project latte/tools
Convertorul nu utilizează înlocuiri simple folosind expresii regulate, ci, dimpotrivă, utilizează direct parserul Twig, astfel încât poate gestiona orice sintaxă, oricât de complexă.
Pentru conversia de la Twig la Latte servește scriptul twig-to-latte.php
:
twig-to-latte.php input.twig.html [output.latte]
Conversie
Conversia presupune ajustarea manuală a rezultatului, deoarece conversia nu poate fi efectuată univoc. Twig utilizează
sintaxa cu punct, unde {{ a.b }}
poate însemna $a->b
, $a['b']
sau
$a->getB()
, ceea ce nu poate fi distins la compilare. Convertorul, prin urmare, convertește totul la
$a->b
.
Unele funcții, filtre sau tag-uri nu au echivalent în Latte sau se pot comporta ușor diferit.
Exemplu
Fișierul de intrare poate arăta, de exemplu, astfel:
{% 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>
După conversia la Latte, obținem acest șablon:
{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>