Menampilkan lebih dari 1 model dalam 1 view

Permisi agan-agan,ane mau nampilin 4 model dalam 1 view

model 1 ama 2 ane mo pake CDetailView

penampakan viewnya


<h1>View Registration Approval LKSA <?php echo $model->datalksa->nama_lksa; ?></h1>


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

	'data'=>$model,

	'attributes'=>array(

		//'id',

		'no_registrasi',

		'datalksa.nama_lksa',

		'userregis.nama_asli',

//		array(

//		    'name'=>'Peregister',

//		    'type'=>'raw',

//		    'value'=>'User::model()->findByAtrributes(array())'

//		),

		'tanggal_regis',

		'tanggal_regis_ulang',

		'userapproval.nama_asli',

		'approval_status',

		'approval_date',

		'komentar',

	),

)); ?>

<h2>Detail Data Lksa <?php echo $model->datalksa->nama_lksa; ?></h2>


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

	'data'=>$model,

	'attributes'=>array(

		//'id',

		'datalksa.kode_lksa',

		'datalksa.nama_lksa',

		'datalksa.alamat',

		'datalksa.kabupaten.kabupaten_name',

		'datalksa.provinsi.provinsi_name',

		'datalksa.email',

		'datalksa.pimpinan',

		'datalksa.statuskepemilikan.status',

		'datalksa.contact_person',

		'datalksa.no_hp',

		'datalksa.jumlah_anak',

		'datalksa.akta_notaris',

		'datalksa.NPWP',

		'datalksa.sip',

		'datalksa.bank',

		'datalksa.nama_dalam_rekening',

		'datalksa.no_rekening',

	),

)); ?>

controllernya


public function actionView($id)

	{

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

			'model'=>$this->loadModel($id),

			'model2'=>$this->loadModel($id),

			

		));

	}

public function loadModel($id)

	{

		$model=RegistrationApproval::model()->findByPk($id);

		$model2=DataLksa::model()->findByAttributes(array('id' => $model->data_lksa_id));

		if($model===null)

			throw new CHttpException(404,'The requested page does not exist.');

		return $model;

	}

udah bisa sih g ada masalah pertanyaannya dri 2 model itu ane dah bner blom ya kodingnya?ada cara nampilin koding yg ane maksud yg lebih bnar?

nah 2 model lagi ane mau nampilin ala CGridView dimana data yang ditampilkan user tersebut di LKSA tertentu(berdasarkan data_lksa_id

ini ane msih bingung mau akalinnya gimana,tolong dibantu ya :D

oh ya satau lagi karena ‘nama_asli’, labelnya nama asli,maka ada 2 label yang berNama asli(‘userapproval.nama_asli’,‘userregis.nama_asli’,)

,cara ganti label di cdetailview gimana ya?




public function actionView(){

     $modelregistrasi = RegistrationApproval::model()->findByPk($id);

     $modeldatalksa=DataLksa::model()->findByAttributes(array('id' => $model->data_lksa_id));

     $this->render('view', array('modelreg'=>$modelregistrasi ,'modeldata'=> $modeldatalksa ));


}



untuk menggnti namanya periksa di model attributes




public function attributeLabels() {

        return array(

           'namaelamae'=>'namam baru nya pa aja',

);

}



berarti gak perlu action loadmodel ya mas?

klo cara nampilin cgridview yg datanya berdasarkan id tertentu gimana mas?

hoo,klo aq ganti di label bkannya sama aj ya mas?kan label ‘nama_asli’ ku Nama Asli dan klo aq ada column userapproval.nama_asli ama ‘userregis.nama_asli’, dia bakal sama ya labelnya?

aq dah coba


array(

//                  'name'=>'Peregister',

//                  'type'=>'raw',

//                  'value'=>'userapproval.nama_asli'

//              ),

munculnya labelnya peregister tapi value nya userapproval.nama_asli

Ada beberapa cara sih mas,

  1. Dengan menggunakan relation

  2. Dengan menggunakan Query (Query Builder)

cara yg ke 2 yang digunakan oleh aqge untuk meload model nya.

kalau cara pertama bisa langsung menambahkan parameter variable global saja, dan langsung bisa di load di view.

bener gak senior2 ?

hmhm ya ngerti si perbedaannya,:D

tapi yang lbih penting nih gimana ya load cgrid biar yg muncul yg sama dengan id nya si LKSA?

Menyangkut ganti nama label:

Setau ane ada beberapa cara untuk ganti label, pertama ganti langsung di cdetailview:


array(   

            'label'=>'Nama Asli XXX',

            'value'=>$model->nama_asli

),

Cara kedua yah, seperti penjelasan dari bro Aqge, tapi ntar berpengaruh ke semua view lainnya juga. Jadi kalau misalnya hanya ingin di CDetailView bersangkutan lebih baik menggunakan attribute ‘label’

Menyangkut menampilkan CGridView, yang harus agan utak atik adalah CActiveDataProvider. Kan agan sudah tahu ingin menampilkan data dengan LKSA id sekian. Nah agan bisa lihat contoh buat active data provider di file model bagian fungsi search().

Kita mgkin bisa buat fungsi baru namanya searchLksa($id) di mana $id ntar dilempar nilai LKSA id

di dalamnya yah cdbcriteria nya gak banyak cuman satu


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

Terus di CGridView nya berarti cukup tulis


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

        'data'=>$model->searchLksa($modelLksa->id),

        'attributes'=>array(

Hmhm jadi value nya pake $model->nama_asli ya,bukan kayak biasa relation.nama_asli

Hmhm okey nanti ane jajal dlu buat c grid view nya,controllernya brati g usah di apa2in ya gan?

nyimak

Yup Controller untuk sementara harusnya tidak perlu disentuh.