İpuçları ve püf noktaları
Editörler ve IDE'ler
Şablonları Latte'yi destekleyen bir editörde veya IDE'de yazın. Çok daha keyifli olacak.
- PhpStorm:
Settings > Plugins > Marketplaceiçinden Latte eklentisini kurun - VS Code: Nette Latte + Neon, Nette Latte templates ya da en yeni Nette for VS Code eklentisini kurun
- NetBeans IDE: Latte için yerel destek kurulumda gelir
- Sublime Text 3: Package Control içinde
Nettepaketini bulup kurun veView > Syntaxiçinde Latte'yi seçin - daha eski editörlerde
.lattedosyaları için Smarty vurgulamasını kullanın
PhpStorm eklentisi çok gelişmiştir ve PHP kodu için mükemmel öneriler sunabilir. En iyi işleyiş için tipli şablonları kullanın.

Latte desteğini web kod vurgulayıcısı Prism.js ve Ace editöründe de bulabilirsiniz.
JavaScript veya CSS içinde Latte
Latte, JavaScript veya CSS içinde çok rahat kullanılabilir. Peki Latte'nin JavaScript kodunu ya da CSS stillerini yanlışlıkla Latte etiketi sanmasından nasıl kaçınırsınız?
<style>
/* HATA: {color} etiketi olarak yorumlar */
body {color: blue}
</style>
<script>
// HATA: {id} etiketi olarak yorumlar
var obj = {id: 123};
</script>
1. seçenek
{'nin hemen ardından bir harfin geldiği durumlardan kaçının; örneğin önüne bir boşluk, satır sonu veya
tırnak ekleyerek:
<style>
body {
color: blue
}
</style>
<script>
var obj = {'id': 123};
</script>
2. seçenek
Bir elemanın içinde Latte etiketlerinin işlenmesini n:syntax ile tamamen kapatın:
<script n:syntax="off">
var obj = {id: 123};
</script>
3. seçenek
Elemanın içinde Latte etiket sözdizimini çift küme parantezine geçirin:
<script n:syntax="double">
var obj = {id: 123}; // bu JavaScript
{{if $cond}} alert(); {{/if}} // bu bir Latte etiketi
</script>
JavaScript'te değişkeni tırnak içine almayın.
Latte'de use yan tümcesinin karşılığı
Bir sınıfa erişirken isim alanını yazmak zorunda kalmamak için, PHP'de kullanılan use yan tümcelerinin
Latte'deki karşılığı nedir? PHP örneği:
use Pets\Model\Dog;
if ($dog->status === Dog::StatusHungry) {
// ...
}
1. seçenek
use yan tümcesi yerine sınıf adını bir değişkende saklayın ve sonra Dog yerine
$Dog kullanın:
{var $Dog = Pets\Model\Dog::class}
<div>
{if $dog->status === $Dog::StatusHungry}
...
{/if}
</div>
2. seçenek
$dog nesnesi Pets\Model\Dog'un bir örneğiyse,
{if $dog->status === $dog::StatusHungry} kullanılabilir.
Latte'de XML üretme
Latte herhangi bir metin formatını üretebilir (HTML, XML, CSV, iCal vb.), ama gösterilen veriyi doğru kaçırması için
ona hangi formatı ürettiğimizi söylememiz gerekir. Bunun için {contentType} etiketi kullanılır.
{contentType application/xml}
<?xml version="1.0" encoding="UTF-8"?>
...
Sonra örneğin benzer şekilde bir site haritası üretebiliriz:
{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>
Eklenen bir şablondan veri aktarma
Eklenen bir şablonda {var} veya {default} ile oluşturulan değişkenler yalnızca o şablonun
içinde vardır ve ekleyen şablonda erişilebilir değildir. Eklenen şablondan ekleyen şablona bir miktar veri geri aktarmak
isterseniz, bir seçenek şablona bir nesne aktarmak ve veriyi ona koymaktır.
Ana şablon:
{* boş bir $vars nesnesi oluştur *}
{var $vars = (object) null}
{include 'included.latte', vars: $vars}
{* artık foo özelliğini içeriyor *}
{$vars->foo}
Eklenen şablon included.latte:
{* veriyi foo özelliğine yaz *}
{var $vars->foo = 123}