HTML Öğeleri
Nette\Utils\Html sınıfı, Siteler Arası Komut Dosyası (XSS) güvenlik açığını önleyen HTML kodu oluşturmaya yönelik bir yardımcıdır.
Nesneleri HTML öğelerini temsil edecek şekilde çalışır, parametrelerini ayarlarız ve render edilmelerine izin veririz:
Kurulum:
Tüm örnekler aşağıdaki sınıf takma adının tanımlandığını varsayar:
HTML Öğesi Oluşturma
Eleman Html::el()
yöntemi kullanılarak oluşturulur:
Adın yanı sıra, HTML sözdiziminde başka nitelikler de girebilirsiniz:
Ya da bunları ikinci parametreye ilişkisel bir dizi olarak aktarın:
Bir öğe adını değiştirmek ve döndürmek için:
HTML Nitelikleri
Bireysel HTML niteliklerini üç şekilde ayarlayabilir ve alabilirsiniz, hangisini daha çok seveceğiniz size kalmış. Birincisi özellikler aracılığıyla:
İkinci yol, özellikleri ayarlamanın aksine, birbirlerine zincirleme bağlayabileceğimiz yöntemleri çağırmaktır:
Üçüncü yol ise en konuşkan olanıdır:
Toplu olarak, öznitelikler addAttributes(array $attrs)
ile ayarlanabilir ve
removeAttributes(array $attrNames)
ile silinebilir.
Bir özniteliğin değeri yalnızca bir dize olmak zorunda değildir, mantıksal öznitelikler için mantıksal değerler de kullanılabilir:
Bir nitelik, örneğin CSS sınıfları için uygun olan, boşluklarla ayrılmış olarak listelenen bir belirteç dizisi de olabilir:
Bir alternatif, değerlerin anahtarın listelenip listelenmeyeceğini belirttiği bir ilişkisel dizidir:
CSS stilleri ilişkisel diziler şeklinde yazılabilir:
Şimdi özellikleri kullandık, ancak aynı şey yöntemler kullanılarak da yapılabilir:
Ya da en konuşkan şekilde bile:
Son bir şey: href()
yöntemi, bir URL'de sorgu parametreleri oluşturmayı kolaylaştırabilir:
Veri Öznitelikleri
Veri nitelikleri özel bir desteğe sahiptir. Adları tire içerdiğinden, özellikler ve yöntemler aracılığıyla erişim
çok zarif değildir, bu nedenle data()
yöntemi vardır:
Veri özniteliğinin değeri bir dizi ise, otomatik olarak JSON'a serileştirilir:
Element İçeriği
Öğenin iç içeriği setHtml()
veya setText()
yöntemleri tarafından ayarlanır. İlkini yalnızca
parametreye güvenli bir HTML dizesi aktardığınızı biliyorsanız kullanın.
Tersine, iç içerik getHtml()
veya getText()
yöntemleriyle elde edilir. İkincisi, HTML
çıktısından etiketleri kaldırır ve HTML varlıklarını karakterlere dönüştürür.
Çocuk Düğümleri
Bir elemanın iç içeriği bir çocuk dizisi de olabilir. Bunların her biri bir dize ya da başka bir Html
öğesi olabilir. Bunlar addHtml()
veya addText()
kullanılarak eklenir:
Yeni bir Html
düğümü oluşturmanın ve eklemenin başka bir yolu:
Düğümlerle dizi öğeleriymiş gibi çalışabilirsiniz. Yani köşeli parantez kullanarak tek tek olanlara erişin,
count()
ile sayın ve üzerlerinde yineleyin:
insert(?int $index, $child, bool $replace = false)
kullanılarak belirli bir konuma yeni bir düğüm eklenebilir.
$replace = false
ise, öğeyi $index
konumuna ekler ve diğerlerini taşır. Eğer
$index = null
ise, sonuna bir eleman ekler.
Tüm düğümler getChildren()
yöntemi ile döndürülür ve removeChildren()
yöntemi ile
kaldırılır.
Belge Parçası Oluşturma
Bir dizi düğümle çalışmak istiyorsanız ve sarmalayan öğeyle ilgilenmiyorsanız, öğe adı yerine null
adresini geçerek document fragment oluşturabilirsiniz:
fromHtml()
ve fromText()
yöntemleri bir parça oluşturmak için daha hızlı bir yol sunar:
HTML Çıktısı Oluşturma
Bir HTML öğesi oluşturmanın en kolay yolu echo
adresini kullanmak veya bir nesneyi (string)
adresine atamaktır. Ayrıca açılış veya kapanış etiketlerini ve niteliklerini ayrı ayrı yazdırabilirsiniz:
Önemli bir özellik de Çapraz Site Komut
Dosyalarına (XSS) karşı otomatik korumadır. setText()
veya addText()
kullanılarak eklenen tüm
öznitelik değerleri veya içerik güvenilir bir şekilde önlenir:
HTML ↔ Metin Dönüştürme
HTML'yi metne dönüştürmek için htmlToText()
statik yöntemini kullanabilirsiniz:
HtmlStringable
Nette\Utils\Html
nesnesi, örneğin Latte veya formların HTML kodu döndüren __toString()
yöntemine sahip nesneleri ayırt etmek için kullandığı Nette\HtmlStringable
arabirimini uygular. Dolayısıyla,
örneğin şablondaki nesneyi {$el}
kullanarak yazdırırsak çift kaçış oluşmaz.