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 kód: keresés markerplace a Nette Latte + Neon vagy Nette Latte sablonok pluginhoz
- Sublime Text 3: a Package Controlban keresse meg és telepítse a
Nette
csomagot és válassza ki a Latte-t aView > 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}