Sfaturi și trucuri
Editori și IDE
Scrieți șabloane într-un editor sau IDE care are suport pentru Latte. Va fi mult mai plăcut.
- NetBeans IDE are suport încorporat
- PhpStorm: instalați pluginul Latte în
Settings > Plugins > Marketplace
- VS Code: căutați markerplace pentru Nette Latte + Neon sau Nette Latte șabloane plugin
- Sublime Text 3: în Package Control găsiți și instalați pachetul
Nette
și selectați Latte înView > Syntax
- în vechile editoare utilizați evidențierea Smarty pentru fișierele .latte
Plugin-ul pentru PhpStorm este foarte avansat și poate sugera perfect codul PHP. Pentru a funcționa în mod optim, utilizați șabloane tipizate.
Suportul pentru Latte poate fi găsit și în corectorul de cod web Prism.js și în editorul Ace.
Latte în JavaScript sau CSS
Latte poate fi utilizat foarte confortabil în JavaScript sau CSS. Dar cum să evitați ca Latte să considere din greșeală codul JavaScript sau stilul CSS ca fiind un tag Latte?
<style>
/* ERROR: interprets as tag {color} */
body {color: blue}
</style>
<script>
// ERROR: interprets as tag {id}
var obj = {id: 123};
</script>
Opțiunea 1
Evitați situațiile în care o literă urmează imediat după un {
, fie prin inserarea unui spațiu, a unei
pauze de rând sau a unor ghilimele între ele:
<style>
body {
color: blue
}
</style>
<script>
var obj = {'id': 123};
</script>
Opțiunea 2
Dezactivează complet procesarea etichetelor Latte în interiorul unui element care utilizează n:syntax:
<script n:syntax="off">
var obj = {id: 123};
</script>
Opțiunea 3
Comutați sintaxa etichetei Latte la acolade duble în interiorul elementului:
<script n:syntax="double">
var obj = {id: 123}; // this is JavaScript
{{if $cond}} alert(); {{/if}} // this is Latte tag
</script>
În JavaScript, nu puneți variabilele între ghilimele.
Înlocuire pentru use
Clauză
Cum să înlocuiți clauzele use
utilizate în PHP, astfel încât să nu fie nevoie să scrieți un namespace
atunci când accesați o clasă? Exemplu PHP:
use Pets\Model\Dog;
if ($dog->status === Dog::StatusHungry) {
// ...
}
Opțiunea 1
În loc de clauza use
, stocați numele clasei într-o variabilă și apoi, în loc de Dog
,
utilizați $Dog
:
{var $Dog = Pets\Model\Dog::class}
<div>
{if $dog->status === $Dog::StatusHungry}
...
{/if}
</div>
Opțiunea 2
În cazul în care obiectul $dog
este o instanță a Pets\Model\Dog
, atunci se poate utiliza
{if $dog->status === $dog::StatusHungry}
.
Generarea XML în Latte
Latte poate genera orice format de text (HTML, XML, CSV, iCal etc.), însă, pentru a scăpa în mod corespunzător datele
afișate, trebuie să-i spunem ce format generăm. Aplicația {contentType}
este utilizată în acest scop.
{contentType application/xml}
<?xml version="1.0" encoding="UTF-8"?>
...
Apoi, de exemplu, putem genera o hartă a site-ului într-un mod similar:
{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>
Transmiterea datelor dintr-un șablon inclus
Variabilele pe care le creăm cu {var}
sau {default}
în șablonul inclus există doar în acesta și
nu sunt disponibile în șablonul inclus. Dacă dorim să transmitem anumite date din șablonul inclus înapoi în șablonul
inclus, una dintre opțiuni este să transmitem un obiect șablonului și să setăm datele în el.
Șablonul principal:
{* creează un obiect gol $vars *}
{var $vars = (object) null}
{include 'included.latte', vars: $vars}
{* conține acum proprietatea foo *}
{$vars->foo}
Șablon inclus included.latte
:
{* scrie date în proprietatea foo *}
{var $vars->foo = 123}