Script Kütüphanesi


    × Bunları biliyor muydunuz?
"Databases/ dizini bir veritabanı tablolarının şemasını oluşturup Generate::databases() komutu ile bu şemanın gerçek bir veritabanı ve tablo olarak işlenmesini sağlayabilirsiniz."


Bu bölümde javascript kodlarının dinamik olarak işlemesi ve kaynak kodların sıkıştırılması ile ilgili kullanımlar anlatılmıştır.

 

 

# Bölüm Başlıkları


# Yöntemler
# Dinamik Javascript Kullanımı

Kontrolcüyü Hazırlayın
Javascript Dosyalarını Hazırlayın
Kontrolcüyü Soyutlayın
Javascript Dosyalarını Dahil Edin

 

 

# Yöntemler


3.0.0 String open(Void)
3.0.0 String close(Void)
3.0.0 This type(Sting $type)
3.0.0 This library(String ...$libraries)
6.22.2 String compress(Callable $content, String $encoding = 'normal', Bool $fastDecode = true, Bool $specialChars = false)

 

 

# Open (ZN >= 3.0.0)


Bir javascript kodu yazılabilmesi için gerekli olan <scriptetiketi oluşturur.

Parametreler

Void
Return This

Örnekler

@Script::open()
<script>

 

 

# Close (ZN >= 3.0.0)


Bir javascript kodunun tamamlandığını göster script> etiketi oluşturur.

Parametreler

Void
Return This

Kullanım

@Script::open()

# Js codes

@Script::close()
<script> ... </script>

 

 

# Type (ZN >= 3.0.0)


Script etiketinin type attributesine karşılık gelir.

Parametreler

String $type Kaynağın türü.
Return This

Kullanım

@Script::type('application/javascript')->open()
<script type="application/javascript">

 

 

# Library (ZN >= 3.0.0)


Javascript etiketi açarken aynı zamanda farklı javascript kaynaklarını dahil etmek için kullanılır.

Parametreler

String ...$libraries Extra yüklenecek kaynaklar
Return This

Kullanım

@Script::library('jquery', 'bootstrap')->type('application/javascript')->open()
<script src="js/jquery"></script>
<script src="js/bootstrap"></script>
<script type="application/javascript">

 

 

# Compress (ZN >= 6.22.2)


Bir javascript kodunu sıkıştırarak dışarıdan okunmasını engellemek için kullanılır.

Parametreler

String $content Javascript kodları.
String $encoding = 'normal' Kodlama türü.
Seçenekler none, numeric, normal, ascii
Bool $fastDecode = true Hızlı kodlama.
Bool $specialChars = false Özel karakterler de sıkıştırılsın.
Return String

Kullanım

@Script::type('application/javascript')->open()

@Script::compress
({<
    console.log(data);
>})

@Script::close()
<script type="application/javascript">
eval(function(p,a,c,k,e,d){e=function(c){return c.toString(36)};if(!''.replace(/^/,String)){while(c--){d[c.toString(a)]=k[c]||c.toString(a)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('$.1({a:"9:\\/\\/8\\/7\\/6\\/1",5:4(0){$(\'#3\').2(0)}});',11,11,'data|ajax|html|Container|
function|success|Home|zn|localhost|http|url'.split('|'),0,{}))
</script>
6.47.3 Güncellemesi

Bu güncelleme ile opsiyonel Script::tag() yöntemi eklemiştir. Bu yöntem script etiklerinin otomatik olarak açılıp kaptılmasını sağlar. Bu yöntem sadece Script::compress() yöntemi ile beraber kullanılabilir.

@Script::tag()->compess
({<
    # your script codes
>})

 

 

# Dinamik Javascript Kullanımı


ZN Framework'te kontrolcüleri kullanarak dinamik içerikli parametrelere bağlı olarak değişebilen javascript içerikleri oluşturabilirsiniz. Burada dinamik içerikten kastımız PHP ile entegreli çalışabilir olmasıdır. Bunun için aşağıdaki aşamaları takip ediniz.

Kontrolcüyü Hazırlayın

Harici olarak çağrılacak javascript içeriklerine erişmek için kullanacağınız kontrolcüyü oluşturun. 

Dosya: Controllers/Scripts.php 
<?php namespace Project\Controllers;

class Scripts extends Controller
{
    public function application(){}
    public function site(){}
    public function main(){}
}

Yukarıdaki kontrolcü 3 ayrı .js dosyasının çağrılmasını sağlayacaktır.

Javascript Dosyalarını Hazırlayın

Javascript kodları standart bir .php dosyasına yazılacaktır. Bunun için aslında burada yaptığımız şey bir görünüm oluşturmaktır ki yukarıda tanımlanan kontrolcü ile uyumlu otomatik olarak yüklenecek 3 adet görünüm oluşturalım.

Dosya: Views/Scripts/[application|site|main].wizard.php

Yukarıdaki görünümlerden herhangi birinin içerisine PHP ile entegreli javascript kodlarınızı yazabilirsiniz. Örneğin;

@login()
    console.log('Oturum açık');
@endlogin
Kontrolcüyü Soyutlayın

Başlangıç kontrolcüsü her kontrolcüden önce bir takı içerikleri otomatik olarak entegre ettiği için bu içeriklerin Scripts.php kontrolcüsünden önce yüklenmesinin engellenmesi gerekmektedir. Bunun için başlangıç kontrolcüsünün const exclude sabitini aşağıdaki gibi ayarlayınız.

Dosya: Controllers/Initialize.php 
<?php namespace Project\Controllers;

class Initialize extends Controller
{
    const exclude = ['Scripts'];
}

Yukarıdaki işlemin amacı çağrılacak javascript kaynağının kendisi dışında başka bir içerikle yüklenmesini engellemek.

Javascript Dosyasını Dahil Edin

Önceki adımlar yapıldıktan sonra artık yapılması gereken sadece ilgili javascript dosyalarınızın normal bir javascript çağrımı gibi dahil edilmesidir. Ve genellikle bu işlemler footer içerisinde gerçekleştirilir.

Dosya: Views/Sections/footer.wizard.php
​​<script src="{{ URL::site('Scripts/application') }}"></script>
<script src="{{ URL::site('Scripts/site') }}"></script>
<script src="{{ URL::site('Scripts/main') }}"></script>

Artık dinamik javascript içeriklerini kullanıma hazır.