Ajax İşleme
"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.
<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.
<?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');
}
}
# 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 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); >})
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); >})