Tippek és trükkök

Szerkesztők és IDE

Írjon sablonokat olyan szerkesztőprogramban vagy IDE-ben, amely támogatja a Latte-t. Sokkal kellemesebb lesz.

  • A NetBeans IDE beépített támogatással rendelkezik
  • PhpStorm: telepítse a Latte bővítményt a Settings > Plugins > Marketplace
  • VS Code: keresse meg a markerplace-t a “Nette Latte + Neon” pluginnal.
  • Sublime Text 3: a Package Controlban keresse meg és telepítse a Nette csomagot és válassza ki a Latte-t a View > Syntax
  • a régi szerkesztőkben használja a Smarty kiemelést a .latte fájlokra

A PhpStorm plugin nagyon fejlett, és tökéletesen tud PHP kódot sugallni. Az optimális működéshez használjon tipizált sablonokat.

A Latte támogatása megtalálható a Prism.js webes kódkiemelőben és az Ace szerkesztőben is.

Latte JavaScript vagy CSS nyelven belül

A Latte nagyon kényelmesen használható JavaScript vagy CSS nyelven belül. De hogyan lehet elkerülni, hogy a Latte tévesen JavaScript kódot vagy CSS stílust tekintsen Latte tagnek?

<style>
	/* ERROR: interprets as tag {color} */
	body {color: blue}
</style>

<script>
	// ERROR: interprets as tag {id}
	var obj = {id: 123};
</script>

1. lehetőség

Kerülje az olyan helyzeteket, amikor egy betű közvetlenül egy { után következik, akár szóköz, akár sortörés, akár idézőjel beiktatásával:

<style>
	body {
		color: blue
	}
</style>

<script>
	var obj = {'id': 123};
</script>

2. lehetőség

Teljesen kikapcsolja a Latte címkék feldolgozását egy elemen belül az n:syntax használatával:

<script n:syntax="off">
	var obj = {id: 123};
</script>

3. lehetőség

A Latte tag szintaxisának átállítása az elemen belüli kettős szögletes zárójelekre:

<script n:syntax="double">
	var obj = {id: 123};          // this is JavaScript

	{{if $cond}} alert(); {{/if}} // this is Latte tag
</script>

JavaScriptben ne tegye a változót idézőjelek közé.

A use záradék helyettesítése

Hogyan lehet helyettesíteni a PHP-ban használt use klauzulákat, hogy ne kelljen névteret írni egy osztály elérésekor? PHP példa:

use Pets\Model\Dog;

if ($dog->status === Dog::StatusHungry) {
	// ...
}

1. lehetőség

A use záradék helyett tárolja az osztály nevét egy változóban, majd a Dog helyett használja a $Dog:

{var $Dog = Pets\Model\Dog::class}

<div>
	{if $dog->status === $Dog::StatusHungry}
		...
	{/if}
</div>

2. lehetőség

Ha a $dog objektum a Pets\Model\Dog példánya, akkor a {if $dog->status === $dog::StatusHungry} használható.

XML generálása Latte-ban

A Latte bármilyen szövegformátumot képes generálni (HTML, XML, CSV, iCal stb.), azonban ahhoz, hogy a megjelenített adatokat megfelelően kimenekítse, meg kell mondanunk neki, hogy milyen formátumot generálunk. A {contentType} taget használjuk erre a célra.

{contentType application/xml}
<?xml version="1.0" encoding="UTF-8"?>
...

Ezután például hasonló módon generálhatunk egy oldaltérképet:

{contentType application/xml}
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" >
	<url n:foreach="$urls as $url">
		<loc>{$url->loc}</loc>
		<lastmod>{$url->lastmod->format('Y-m-d')}</lastmod>
		<changefreq>{$url->frequency}</changefreq>
		<priority>{$url->priority}</priority>
	</url>
</urlset>

Adatok átadása egy belefoglalt sablonból

Azok a változók, amelyeket a {var} vagy a {default} segítségével hozunk létre a bevont sablonban, csak abban léteznek, és nem állnak rendelkezésre a bevont sablonban. Ha a bevont sablonból vissza akarunk adni valamilyen adatot a bevont sablonba, akkor az egyik lehetőség, hogy egy objektumot adunk át a sablonba, és az adatokat beállítjuk benne.

Fő sablon:

{* létrehoz egy üres $vars objektumot *}
{var $vars = (object) null}

{include 'included.latte', vars: $vars}

{* most már tartalmazza a foo tulajdonságot *}
{$vars->foo}

included.latte:

{* írja az adatokat a foo tulajdonságba *}
{var $vars->foo = 123}
verzió: 3.0