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>
versiune: 3.0