İpuçları ve Püf Noktaları
Editörler ve IDE
Şablonları Latte desteği olan bir editör veya IDE'de yazın. Çok daha keyifli olacaktır.
- NetBeans IDE yerleşik desteğe sahiptir
- PhpStorm: Latte eklentisini şuraya yükleyin
Settings > Plugins > Marketplace
- VS Code: Nette Latte + Neon veya Nette Latte şablonları eklentisi için markerplace'te arama yapın
- Sublime Text 3: Paket Kontrolünde
Nette
paketini bulun ve yükleyin ve Latte'yi seçinView > Syntax
- eski düzenleyicilerde .latte dosyaları için Smarty vurgulamasını kullanın
PhpStorm eklentisi çok gelişmiştir ve PHP kodunu mükemmel bir şekilde önerebilir. En iyi şekilde çalışmak için, yazılan şablonları kullanın.
Latte desteği, web kod vurgulayıcı Prism.js ve editör Ace'de de bulunabilir.
JavaScript veya CSS İçinde Latte
Latte, JavaScript veya CSS içinde çok rahat bir şekilde kullanılabilir. Ancak Latte'nin yanlışlıkla JavaScript kodunu veya CSS stilini bir Latte etiketi olarak görmesi nasıl önlenir?
<style>
/* ERROR: interprets as tag {color} */
body {color: blue}
</style>
<script>
// ERROR: interprets as tag {id}
var obj = {id: 123};
</script>
Seçenek 1
Aralarına boşluk, satır sonu veya tırnak işareti koyarak bir harfin {
harfinden hemen sonra geldiği
durumlardan kaçının:
<style>
body {
color: blue
}
</style>
<script>
var obj = {'id': 123};
</script>
Seçenek 2
n:syntax kullanarak bir öğenin içindeki Latte etiketlerinin işlenmesini tamamen kapatın:
<script n:syntax="off">
var obj = {id: 123};
</script>
Opsiyon 3
Latte etiketi sözdizimini öğe içinde çift küme parantezi olarak değiştirin:
<script n:syntax="double">
var obj = {id: 123}; // this is JavaScript
{{if $cond}} alert(); {{/if}} // this is Latte tag
</script>
JavaScript'te değişkeni tırnak içine almayın.
use
Maddesinin Değiştirilmesi
Bir sınıfa erişirken isim alanı yazmak zorunda kalmamak için PHP'de kullanılan use
cümleleri nasıl
değiştirilir? PHP örneği:
use Pets\Model\Dog;
if ($dog->status === Dog::StatusHungry) {
// ...
}
Seçenek 1
use
cümlesi yerine sınıf adını bir değişkende saklayın ve ardından Dog
yerine
$Dog
kullanın:
{var $Dog = Pets\Model\Dog::class}
<div>
{if $dog->status === $Dog::StatusHungry}
...
{/if}
</div>
Seçenek 2
Eğer $dog
nesnesi Pets\Model\Dog
'un bir örneğiyse,
{if $dog->status === $dog::StatusHungry}
kullanılabilir.
Latte'de XML Oluşturma
Latte herhangi bir metin formatı (HTML, XML, CSV, iCal, vb.) oluşturabilir, ancak görüntülenen verilerden düzgün bir
şekilde kaçmak için hangi formatı oluşturduğumuzu ona söylemeliyiz. Bu {contentType}
etiketi bunun için kullanılır.
{contentType application/xml}
<?xml version="1.0" encoding="UTF-8"?>
...
Ardından, örneğin, benzer şekilde bir site haritası oluşturabiliriz:
{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>
Dahil Edilen Bir Şablondan Veri Geçirme
Dahil edilen şablonda {var}
veya {default}
ile oluşturduğumuz değişkenler sadece dahil edilen
şablonda bulunur ve dahil eden şablonda kullanılamaz. Dahil edilen şablondan dahil edilen şablona bazı verileri geri
aktarmak istiyorsak, seçeneklerden biri şablona bir nesne aktarmak ve verileri ona ayarlamaktır.
Ana şablon:
{* creates an empty object $vars *}
{var $vars = (object) null}
{include 'included.latte', vars: $vars}
{* now contains property foo *}
{$vars->foo}
Dahil edilen şablon included.latte
:
{* write data to the property foo *}
{var $vars->foo = 123}