[view] 2 model 1 form… pada yii framework…

Untuk proses create(insert) 2 table dari satu form, anda dapat melihatnya disini. Nah, disini yang akan saya bahas adalah bagaimana cara menampilkan 2 tabel dalam 1 form.

Pertama, pada controller nya pastikan terdapat dua fungsi yang mengembalikan nilai pada kedua model tersebut seperti berikut:

	public function loadModel($id)
	{
		$model=Satu::model()->findByAttributes(array('satusatu'=>$id));
		if($model===null)
			throw new CHttpException(404,'The requested page does not exist.');
		return $model;
	}
	
	
	public function loadModel2($id)
	{
		$model=Dua::model()->findByAttributes(array('duasatu'=>$id));
		if($model===null)
			throw new CHttpException(404,'The requested page does not exist.');
		return $model;
	}

Untuk “loadModel($id)” itu adalah fungsi yang dihasilkan otomatis pada saat yii framework menggenerate operasi CRUD. Fungsi loadModel itu sendiri akan mengembalikan sebuah nilai yang tabel yang memiliki PK=$id. Nah, karena kita disini akan memanggil juga tabel “Dua” maka kita harus sebuah fungsi yang mengembalikan nilai pada tabel “Dua”. Disinilah peranan dari fungsi “loadModel2($id)”, dimana fungsi tersebut akan mengembalikan nilai pada tabel “Dua” yang memiliki PK=$id.

Setelah itu, kita render nilai dari tabel “Satu” dan tabel “Dua” ke function actionView agar dapat ditampilkan. Code pada fungsi tampil akan menjadi seperti berikut:

	public function actionView($id)
	{
		$this->render('view',array(
			'model'=>$this->loadModel($id),
			'model2'=>$this->loadModel2($id),
		));
	}

Disana terlihat fungsi tersebut merender dua buah model, yaitu “model” dan “model2”. Setelah itu mari kita modifikasi file view nya yang terletak pada protected/views/namaModel/view.php.

Sebelum dilakukan perubahan, code pada halaman tersebut adalah sebagai berikut:

<?php $this->widget('zii.widgets.CDetailView', array(
	'data'=>$model,
	'attributes'=>array(
		'satusatu',
		'satudua',
	),
));

Code diatas hanyalah menampilkan tampilan pada tabel “Satu”, untuk menampilkan tampilan nilai dari tabel “Dua”, cukup anda tambahkan code berikut tepat di bawah code di atas:

$this->widget('zii.widgets.CDetailView', array(
	'data'=>$model2,
	'attributes'=>array(
		'duadua',
	),
));

Code di atas menunjukkan bahwa kita akan menampikan nilai atribut “duadua” pada tabel “Dua”.

Selesai…. Selamat mencoba…

Semoga membantu😀 ….

38 Responses to [view] 2 model 1 form… pada yii framework…

  1. p-man says:

    gan, ini kalo d pake buat input gimana?.,
    jadi dari satu form, masuk ke 2 tabel.,

  2. sabitzhabit says:

    bisa gan, ada di post yg lain gan…

  3. gan tanya. kenapa harus 2 form ya? kenapa gak satu aja ya di form yang kemarin di buat untuk upload. itu aja di kasih fungsi2 yang kyk gitu…… kalau 2 form. form mana yang untuk download da upload apa harus beda ya gan? (rin)

  4. sabitzhabit says:

    itu cuma 1 form kok gan, tapi dari 2 model ngambil nya… tapi saya nampilinnya di 2 CListView yang beda gan…

  5. gan ane tanya. ane kan disuruh buat web nih. DB sudah disediakan. ane pikir ini mirip dengan kasus ini. ada dua tabel downtable dan uptable. gini gan. di uptable itu dia konek dengan down table. ada beberapa kesamaan di dua tabel itu, sma2 punya path url dari file, dan FK nya ada di table downtable. nah kira2 agan ngerti gak maksudnya? karena menurut ane cukup downtable aja udah bisa untuk download ma upload. kasus ini kan hampir sam ma tutorial agan. jadi sedikit penjelasan aja. bisa bantu gan? (rin)

  6. sabitzhabit says:

    ane ga tau detail kebutuhan agan kayak gimana. Kalo emang utk kelola file aja, ane biasa nya buat cuma 1 tabel gan. Kalo masalah upload ama download, ntar itu di buat fungsi nya.. Tapi kalo emang ada kbutuhan lain dibalik itu, ya mau ga mau 2 tabel gan..

  7. kebutuhan lain kayak apa ya gan? ane juga merasa jadi 1

  8. sabitzhabit says:

    misal kalo mau dilakukan pencatatan statistik upload dan download gan..

  9. gan tanya nich. kmrin sempet download pake X-sendfile. ke donload tapi gak ada isinya kenapa ya gan?
    ni code ane

    Yii::app()->request->xSendFile(Yii::app()->basePath.’/../upload/’.$model->downid.$model->downurl);

    di $model->downurl = sudah ada typenya.

    karena tiap yg ane simpen ane kasih id+namasli.type
    misal: …./12sekar.jpg

    gini gan. ke donlod tapi kosong. napa ya gan?

  10. sabitzhabit says:

    waduh, ga tau jga ga kalo x-sendfile.. ga pernah cobain..

  11. biasanya pake apa gan untuk downlod?

  12. sabitzhabit says:

    langsung ane arahin langsung gan ke path nya..😀

  13. itu bukannya untuk nampilin ya gan? kan beda sama download gan?

  14. sabitzhabit says:

    oh, punya agan file image ya? ane kirain .zip/.rar gitu… kalo gtu ane jga belum pernah coba malah gan..

  15. wah terima kasi buanyak ya gan… atas bantuannya😀. senang diskusi dengan agan. nice to meet you and nice

  16. gan maap ane sering nongol ya :sorry
    jadi gini gan, misalkan ane ada dua tabel yang satu tabel isinya (id_satu, nama, id_dua),
    tabel kedua (id_dua, gender).
    nah kalo misalkan ane pengen munculin yang kaya gini gmn ya gan?
    mohon pencerahannya lagi master :sorry

  17. munculin yg kayak gimana mksd ny gan?

  18. jadi udah berhasil muncul gan dari dua tabel.
    nah kan yang tabel dua isinya cuma ada 2 row, yaitu laki2 & perempuan.
    jadi pengen nampilin id_satu, nama, gender(di tabel 2).
    kalo misal query nya “SELECT a.id_satu, a.nama, b.gender FROM satu a, dua b WHERE a.id_dua = b.id_dua;😀

  19. coba agan cari di blog ini postingan tentang CSQldataprovider..
    itu lebih enak kalo untuk nampilin data hasil join gan..

  20. baik gan, ane coba explore lagi ya.
    banyak bgt manfaatnya maen kesini, makasih banyak ya gan🙂

  21. Deddy says:

    Pak, kalau mau tampilkan dibagian “admin.php” actionAdmin saya harus rubah dimana ya? trus bisa atau tidak? soalnya keterangan diatas kan cuman bagian actionView saja. Thx.

  22. pasti bisa pak.. tinggal mau dibuat seperti apa?

  23. khanif says:

    help gan..
    ane uda ngikuti cara agan tapi kok selalu muncul
    Call to a member function isAttributeRequired() on a non-object in D:\dokumen\www\project\2012\yii-1.1.9.r3527\framework\web\helpers\CHtml.php on line 1185

    itu kenapa ya gan

  24. bisa post controller n view nya gan?

  25. khanif says:

    iya udah ketemu gan ternyata ada kode yg keliru. Terus kalo untuk repopulated data kembali gmn gan? untuk contoh actionUpdate, punya saya ketika diklik update pd cgriedviewnya, untuk selectnya masih berbunyi -pilih salah satu-. Belum benar memilih nilai ‘selected’. Tp untuk id nya sudah bener sih gan masuk ke textfield yg lain

  26. mksd ny gmana gan?

  27. khanif says:

    kayak yg disini ternyata gan http://www.yiiframework.com/wiki/24/creating-a-dependent-dropdown/#c3942
    saya coba2 dulu gan yg ada disitu. mksh gan atas responnya

  28. Ryo says:

    Numpang tanya neh, maklum baru belajar.

    Kalau misalnya saya mau tampilkan data dari tabel dua secara tabular, gimana caranya bro?

    Terima kasih

    Salam Yii

  29. saya masih bingung sama pertanyaannya. bisa dijelasin dengan contoh gan?

    • Ryo says:

      +———————————-+
      | kode faktur : xxxxxx |
      | nama toko : xxxxxxxxxxx |
      +———————————-+

      +—————————————–+
      | kode | nama barang | jumlah | sub total |
      +—————————————–+
      | 001 | barang 001 | 1 | 5000 |
      | 002 | barang 002 | 1 | 15000 |
      | 003 | barang 003 | 1 | 25000 |
      +—————————————–+

      kira2 seperti itu gan, apa bisa yah diterapkan?

      Terima kasih

      Salam Yii

      • bisa mas.. coba mas lihat aja postingan di atas.. itu udah sama persis kayak kasus nya mas.. di masing2 data barang nya di kasih field kode faktur nya dan toko nya dimana dia punya relasi sama table kode faktur itu mas.. Trus ikutin aja contoh kayak postingan tsb..

  30. Ryo says:

    Di controller

    public function actionView($id)
    {
    $this->render(‘view’,array(
    ‘model’=>$this->loadModel($id),
    ‘model2’=>$this->loadModel2($id),
    ));
    }
    ……

    public function loadModel($id)
    {
    $model=Tuploadh::model()->findByPk($id);
    if($model===null)
    throw new CHttpException(404,’The requested page does not exist.’);
    return $model;
    }

    public function loadModel2($id)
    {
    $model=Tuploadd::model()->findAllByAttributes(array(‘inkdupload’=>$id));
    if($model===null)
    throw new CHttpException(404,’The requested page does not exist.’);
    return $model;
    }

    di view.php

    $this->widget(‘zii.widgets.CDetailView’, array(
    ‘data’=>$model,
    ‘attributes’=>array(
    ‘inkdupload’,
    ‘chnamafile’,
    ‘chstatusupload’,
    /*
    ‘incount’,
    ‘dttglcreated’,
    ‘chuncreated’,
    ‘dttglupdated’,
    ‘chunupdated’,
    */
    ),
    ));

    $this->widget(‘zii.widgets.CDetailView’, array(
    ‘data’=>$model2,
    ‘attributes’=>array(
    ‘chkdcustomer’,
    ‘chnamacustomer’,
    ‘chalamattoko1’,
    ‘chalamattoko2’,
    ‘chkdsite’,
    //’chuncreated’,
    //’dttglupdated’,
    //’chunupdated’,
    ),
    ));

    Kira2 kalau dari code di atas apa lagi yang kurang yah?? soalnya di saya punya hasilnya gak seperti itu.. di tabel dua nya itu muncul nya cuma sebaris itu pun tampilanya seperti tabel satu..

    Terima kasih

    Salam Yii

    • Ryo says:

      Koreksi yah…
      public function loadModel($id)
      {
      $model=Tuploadh::model()->findByPk($id);
      if($model===null)
      throw new CHttpException(404,’The requested page does not exist.’);
      return $model;
      }

      public function loadModel2($id)
      {
      $model=Tuploadd::model()->findAllByAttributes(array(‘inkdupload’=>$id));
      if($model===null)
      throw new CHttpException(404,’The requested page does not exist.’);
      return $model;
      }

      • Ryo says:

        output saya jadinya gini

        Kode Upload 25
        Nama File 20130620_045932-user
        Status Upload uploadedtoserver

        Chkdcustomer 81028509
        Chnamacustomer TOKO SAYANG
        Chalamattoko1 BAJI ATEKA NO. 22
        Chalamattoko2 SMPG KAMPUS KHARISMA
        Chkdsite 818512

        Terima kasih
        Salam Yii

      • wah gan, terus terang kalo nanya coding panjang2 gitu saya males ngecek nya gan..

      • Ryo says:

        ow ya gpp..makasih reply nya.. mungkin bisa dihapus aja..hehehe..makasih banyak yah…

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: