CGridView Tidak muncul inputan search / filternya

Para Master Yiiers semua minta bantuannya dong ,…

saya mencoba CGridView dengan relasi , namun tabel yang terrelasi tidak keluar inputan untuk searchingnya

saya lampirkan

ini modelnya




  * @return array validation rules for model attributes.

	 */

	public function rules()

	{

		// NOTE: you should only define rules for those attributes that

		// will receive user inputs.

		return array(

			array('id_user, id_bank ','required'),

			array('id_user, id_bank', 'numerical', 'integerOnly'=>true),

         

			// The following rule is used by search().

			// Please remove those attributes that should not be searched.

			array('id, id_user , bankName.name','safe' , 'on'=>'search'),

		);

	}


	/**

	 * @return array relational rules.

	 */

	public function relations()

	{

		// NOTE: you may need to adjust the relation name and the related

		// class name for the relations automatically generated below.

		return array(

            'bankName'=>array(self::BELONGS_TO, 'Bank', 'id_bank'),

            'userName'=>array(self::BELONGS_TO, 'User', 'id_user'),

		);

	}


------------------------------------


public function search($id_user)

	{

		// Warning: Please modify the following code to remove attributes that

		// should not be searched.


		$criteria=new CDbCriteria;

        

        $criteria->compare('id',$this->id);

	    //$criteria->compare('id_bank',$this->id_bank,TRUE);

		$criteria->compare('id_user',$id_user); //$id_user);

        

		$criteria->compare('bankName.name',$this->bankName->name,TRUE);

        //$criteria->with='bankName';

        /// $criteria->addSearchCondition('bankName.name',$this->id_bank,TRUE);

    

       

		return new CActiveDataProvider(get_class($this), array(

			'criteria'=>$criteria,

		));

	}




dan ini viewnya





<?php $this->widget('zii.widgets.grid.CGridView', array(

	'id'=>'fuser-bank-grid',

	'dataProvider'=>$model->search($id_user),

	'filter'=>$model,

	'columns'=>array(

		'id',

		'id_user',

		//'bankName.name',

		array(

                        'name'=>'bankName.name',

               

                      

                ),


		

		array(

			'class'=>'CButtonColumn',

		),

	),

)); ?>




bankName.name merupakan relasinya , field ini keluar datanya tapi tidak keluar searchingnya

padahal sangat di perlukan

munkin master sudah pernahh ngalaminn mohon bantuannya yahh …

Diingat lagi alur pencariannya:

keyword -> controller -> model -> view

coba di debug $this->bankName->name -nya muncul tidak sebelum digunakan untuk search

mo coba bantuin…

cmiiw…

function search :

$criteria->compare(‘bankName.name’,$this->bankName->name,TRUE);

diganti jd

$criteria->compare(‘bankName.name’,$this->id_bank,TRUE);

$criteria->with=‘bankName’;

di gridview

array(

 'name'=&gt;'bankName.name',

),

  diganti 

array(

        'name'=&gt;'id_bank',


        'header'=&gt;'Bank Name',


        'value'=&gt;'&#036;data-&gt;bankName-&gt;name',

),

‘dataProvider’=>$model->search($id_user),

diganti

‘dataProvider’=>$model->search(),

waaw thx bgt sis,sekalian dung aq mau tanya

ada ada 3 level user yang bisa lihat index dengan data berbeda2,level 1 dia bisa lihat semua data,level 2 dia cuma bisa lihat yg provinsinya sama ama dia,dan level 3 dia cuma bisa lihat yang satu kabupaten ama dia,

ane si dah dapet bayangan

nah di index kan dia mainnya active data provider ane mau tanya gimana yaa caranya bikin dataprovider2 yang berbeda2 menurust privilege user yg ane maksud? g mudeng :(

q lum pernah coba c…

tapi kalo dilogika c bikin function ambil data di modelnya aja…

ntar ada kondisi yg search berdasarkan level yg dimau…

q biasanya index pake cgridview c…

maaf kalo ga bisa bnyk bantu gan…

newbie c…

bru blajar yii 3 minggu…

hehhehehhehe…

Agan perlu menyimpan id level user di session. Caranya pada file UserIdentity.php saat sukses login simpan id levelnya.




$this->setState('level_user', $data->level_user);



Kemudian tinggal pada saat membuat Active providernya di kasih kondisi. sesuai dengan id levelnya. semoga membantu :D

kalau level user sih aq dah dapet pake yi::app->user->getStatus(); cara buat active providernya itu gimana ya gan?

ane juga blajar yii gr2 skripsi :( hahah php masih blepotan juga nekat pke framework jdi agak g mudeng :P

punyaq gini gan…

di model buat function indeks()


public function indeks()

	{

		// Warning: Please modify the following code to remove attributes that

		// should not be searched.

		$id_developer =Yii::app()->user->id_developer;

		$criteria=new CDbCriteria;


		$criteria->compare('t.id_developer',$this->id_developer,true);

		$criteria->compare('t.username',$this->username,true);

		$criteria->compare('t.password',$this->password,true);

		$criteria->compare('t.name',$this->name,true);

		$criteria->compare('t.status',$this->status);

		$criteria->condition = "t.id_developer = ".$id_developer;

		return new CActiveDataProvider(get_class($this), array(

			'criteria'=>$criteria,

		));

	}

trus di controller


public function actionIndex()

	{

		$model = new Developer;

		$dataProvider=new CActiveDataProvider('Developer');

		$this->render('index',array(

			'dataProvider'=>$model->indeks(),

		));

	}

nah di view index nya


$this->widget('zii.widgets.grid.CGridView', array(

	'id'=>'developer-grid',

	'dataProvider'=>$dataProvider,

	'columns'=>array(

		'id_developer',

		'date_created',

		'date_last_update',

		'username',

		'password',


		'name',


		array(

			'name'=>'status',

			'type'=>'raw',

			'value'=>'MMS::model("util")->getStatus($data->status)',

		),

	),

));

itu buat nampilin data developer yg sesuai dengan idnya… jadi developer ga bia liat data developer lain…

kayana mirip ma kebutuhan agan…

cuma sharing aja c…