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