Ajax İşleme


    × Bunları biliyor muydunuz?
"Kontrolcü yöntemine ajax kontrolü için : void tür dayatması uygulayabilirsiniz."


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);
     >})