Merhaba arkadaşlar Yii içinde nasıl ajax kullanacağız konulu kısa bir yazı yazmak istedim.Öncelikle Amacımız sayfamızda bir linke tıklandığında ajax metodu ile başka bir sayfada sorgu yaptırıp yine sorguyu gönderdiğimiz sayfa da ekrana basmayı göstereceğim.Gereksinimler şunlar:
Öncelikle protected/views/muhendislik/bolumler.php sayfamız olsun. Bu sayfada şu kodlarımız yazılacak.
<ul>
<li>
<?php
echo CHtml::ajaxLink
(
'Link etiket',
array('muhendislik/bolumbilgi',
'bolumSeo'=>$bolumSeo),
array('update'=>'#bolumBilgi')
)
?>
</li>
</ul>
<div id="bolumBilgi">
</div>
Yukarıda ajaxLink kullandık.ajaxLink metodunun ilk paremetresi label(etiket),ikinci parametre link kısmı ve göndereceğimiz değişkenler,üçünücü parametre ise cevap geldiğinde sayfa da güncellencek HTML DOM nesnesinin #id değeri.Peki ikinci parametre olan muhendislik/bolumbilgi neresi diye sorarsanız.Bunu ise protected/controllers/MuhendislikController.php sayfasına gidecek.
protected/controllers/MuhendislikController.php sayfası içinde aşağıda ki kodlar yazılı olacak.
public function actionBolumbilgi()
{
$bolumSeo=$_GET['bolumSeo'];
$sayfa=$_GET['sayfa'];
$bolum_bilgi=Yii::app()->db->createCommand(
'select * from bolumler '
.'left join bolumdetay on bolumler.bolumID=bolumdetay.bolumID'
. ' where bolumSeo="'.$bolumSeo.'" LIMIT 1'
)->queryAll();
$this->renderPartial('bolumbilgi',array('bolum_bilgi'=>$bolum_bilgi,'sayfa'=>$sayfa));
}
yukarıda ki kodları kendinize göre düzenleyebilirsiniz ancak kendi yaptığımı açıklamama izin verin.
Öncelikle $GET ile gelen parametreleri karşıladık.Sorgumuzu yazdık ve üretilen sonucu ve bilgileri tekrar protected/views/bolumbilgi.php adında bir sayfaya renderPartial metodu ile gönderdik.renderPartial yapmamızın nedeni çıkan bilgileri html ve css içine gömebilmek.
protected/views/bolumbilgi.php sayfası şu şekilde olacak:
<?php
$veriler=array();
foreach($bolum_bilgi as $bilgi){
$veriler['bolumIletisim']=$bilgi['bolumIletisim'];
$veriler['bolumResim']=$bilgi['bolumResim'];
$veriler['bolumBilgi']=$bilgi['bolumBilgi'];
$veriler['bolumTarihce']=$bilgi['bolumTarihce'];
$veriler['bolumMisyon']=$bilgi['bolumMisyon'];
$veriler['bolumVizyon']=$bilgi['bolumVizyon'];
}
?>
<div class="course-details clearfix" id="bolumBilgi2" >
<?php
<img src="<?php echo Yii::app()->baseUrl ?>/images/bolum/<?php echo $veriler['bolumResim'];?>"
alt="" width="226" height="223" style="float:left;margin:0px 12px;" class="img-responsive">
<?php echo $veriler['bolumBilgi'];
?>
</div>
Eğer renderPartial metodunu kullanmaycak ve ham verileri göndereceksek protected/controllers/MuhendislikController.php sayfası içinde aşağıda ki kodlar yazılı olacak.
public function actionBolumbilgi()
{
$bolumSeo=$_GET['bolumSeo'];
$sayfa=$_GET['sayfa'];
$bolum_bilgi=Yii::app()->db->createCommand(
'select * from bolumler '
.'left join bolumdetay on bolumler.bolumID=bolumdetay.bolumID'
. ' where bolumSeo="'.$bolumSeo.'" LIMIT 1'
)->queryAll();
echo $bolum_bilgi;
#CJSON::encode(array('data'=>$bolum_bilgi))
}