Gridview yapısında direk tablodan veri çektiğimizde tablonun id değeri tuttuğu alanları işimizi görmeye bilir. Bu alanlar farklı tablolarla ilişkili olabilir. Bu gibi durumlarda id nin karşılık geldiği değeri gridview de göstermek için bir iki satır kod eklemek yeterli olacaktır. Tüm bunlardan önce Yİİ KENDİ HELPER DOSYAMIZI OLUŞTURMAK yazımı inceleyerek bir fonksiyon sayfası oluşturmak iyi olacaktır.
Örneğimde bilisimcihazlarihelper adında bir fonksiyon dosyası oluşturdum ve bu dosya içinde ihtiyacım olacak olan fonksiyonları kullanacağım. Aşağıdaki admin.php dosyamda tablomda ki markalarid alanımda tuttuğum değerin başka bir tablodaki karşılığını almak istiyorum.
/view/aaa/admin.php
<?php $this->widget(‘zii.widgets.grid.CGridView’, array(
‘id’=>’envanter-cihazbilgi-grid’,
‘dataProvider’=>$model->search(),
‘cssFile’=>’/css/grid.css’,
‘summaryText’ => ”,
‘columns’=>array(array(‘header’=>’Sıra’,’value’=>’$this->grid->dataProvider->pagination->currentPage * $this->grid->dataProvider->pagination->pageSize + ($row+1)’,),
array(‘name’=>’markalarid’,’value’=>’bilisimcihazlarihelper::markaadi($data->markalarid)’,’header’=>’marka’,),
array(‘name’=>’okullarid’,’value’=>’bilisimcihazlarihelper::okuladi($data->okullarid)’,’header’=>’okul ‘,),
‘ip’,
‘port’,array(‘class’=>’CButtonColumn’,),
),
)); ?>
Şimdi bu fonksiyonları tanımlayacak olursam bilisimcihazlarihelper.php dosyasına markaadi ve okuladi olarak fonksiyonlar oluşturdum. Gerekli tablolardan id değerine göre sorgu yapıp değeri döndürüyorlar.
bilisimcihazlarihelper.php
public static function okuladi($id)
{
@$okuladi=EnvanterOkullar::model()->findbyPk($id)->bina;
if($okuladi)
return($okuladi);
else
return “”;
}public static function markaadi($id)
{
@$markaadi=EnvanterMarkalar::model()->findbyPk($id)->marka;
if($markaadi)
return($markaadi);
else
return “”;
}böylece marka alanında ki veritabanında kayıtlı 10 değeri markalar tablosundaki karşılığı olan HP Procurve Switch 2530-48G+Poe değeriyle gösterildi. Aynı şekilde okul alanında ki 15 değeri de Sivil Havacilik olarak gösterildi.
İlk Yorumu Siz Yapın