Ajax İşleme


    × Bunları biliyor muydunuz?
"Devtools projesi ile framework kullanma deneyiminizi daha görsel hale getirebilirsiniz."


ZN Framework'te istek yapılan URL'ler bir kontrolcü yöntemini çalıştırdığı için Ajax isteği sonucu çalıştırılacak kodlar da kontrolcü yöntemine yazılmalıdır. Aşağıda Jquery ile örnek ajax kullanımı gösterilmiştir.

 

 

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


# Görünümün Hazırlanması
# Kontrolcünün Hazırlanması
# Ajax Sınıfı

 

 

# Görünümün Hazırlanması


Aşağıda ajax kodunun yer aldığı örnek görünüm sayfası içeriğine yer verilmiştir.

Dosya: Views/Home/exampleAjaxProcess.wizard.php
<script>
$.ajax
({
    url     : "{{URL::site('Home/exampleAjaxProcess')}}",
    type    : "post",
    data    : {"name":"Ajax Process", "value":"Example Data"},
    dataType: "json",
    success : function(data)
    {
        alert(data.name);
        alert(data.value);
    }
});
</script>

Yukarıda wizard sayfası kullanıldığı için php etiketleri yerine küme parantezleri kullanılmıştır.

 

 

# Kontrolcünün Hazırlanması


Aşağıda örnek amaçlı gösterilen ajax isteğinin yapıldığı kontrolcü yönteminin içeriğine yer verilmiştir.

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

use Http, Post;

class Home
{
    public function exampleAjaxProcess() : void
    {
        # Your codes...

        echo json_encode(Post::all()); # Return Values
    }
}

Eğer bir ajax içeriğiniz PHP kodlarından daha çok HTML kodları içerecekse içeriğin bir görünüme oluşturulup kontrolcü yöntemi içerisine Import:: kütüphanesi ile dahil edilebilir.

<?php namespace Project\Controllers;

use Http, Post, Import;

class Home
{
    public function exampleAjaxProcess() : void
    {
        Import::view('Home/myAjaxContent');
    }
}
Dikkat: Yöntemlere uygulanan void tür dayatması ajax kontrolü sağlar. Bunun için ekstra kontrol gerekmez.

 

 

# Ajax Sınıfı


Jquery'nin ajax söz dizimini ZN'nin Ajax:: kütüphanesi ile yapabilmeniz de mümkündür. Ajax:: sınıfı Jquery'nin tüm yöntemlerini kullanabilir. Aşağıda jquery parametrelerinin PHP karşılıklarının listesi verilmiştir.

JQuery PHP
PlainObject {'example':'data'} array ['example' => 'Data']
Function function(p1, p2){ ...codes } callable ({< ..codes >}, 'p1, p2')
bool true bool true
Numeric 5 Numeric 5
string post string 'post'

Kullanımlar

<script>
@Ajax::url('Home/test')
     ->type('post')
     ->data({< $('#form').serialize() >})
     ->success
     ({<
        alert(data);
     >})
     ->done({< alert(5); >})
</script>
Script Etiketleri

Script etiketlerinin Ajax:: sınıfı tarafından açılmasını isterseniz aşağıdaki gibi kullanın.

@Ajax::tag(true)
     ->url('Home/test')
     ->type('post')
     ->dataType('json')
     ->data(['example' => 'Example Data'])
     ->success
     ({<
        alert(data);
     >})
     ->done({< alert(5); >})
Wizard Kullanımı

Ajax:: kütüphanesinin aynı zamanda wizard karşılığıda mevcuttur.

Ajax::url(string $uri) @ajax(string $uri)
@ajax('Home/test')->tag(true)
     ->data(['example' => 'Example Data'])
     ->success
     ({<
        alert(data);
     >})