Cformmodel dan CactiveRecord

agan, suhu, master, dan sejawat

di tutorial membuat form perlu dengan membuat CFormmodel terlebih dahulu…

tapi kalo pake CRUD tidak ada ditemui hal ini.

saya dah coba dua-duanya dan selama ini saya suka dengan membuat frm langsung dari AR modelnya,

keduanya sama-sama tidak perlu carving sql.

tapi mungkin para suhu punya pertimbangan yang lebih masuk akal mohon pencerahannnya…

saya update sendiri topic ini, i ni pengalaman saya semoga yang membaca bisa mendapat pertimbangan.

menggunakan Model AR akan sangat baik jika prose input data hanya melibatkan satu model saja dalam hal ini table

tetapi jika melibatkan sejumlah table dalam proses input data maka sangat baik jika anada membangaun model Cformmodel terlebih dahulu.

karena jika melibatkan banyak table, dan anda memaksakan untuk menggunakan AR sebagai modelnya maka, controller nya menjadi ramai dengan perintah save keberbagai model.

tetapi jika ada formmodel hal itu ditangani oleh form modelnya dan controllernya tetep ramping enak untuk di pelotottin alur -nya.

sedangan field yang memerlukan property tengah seperti tanggal, proses mengubah nilai dari combo ke string dilakukkan di formmodel atau di ARModel, jangan di controller…

trims…

Oh, bener juga yah…

Akhirnya saya mendapatkan pencerahan juga…

Selama ini saya sih pikirnya CFormModel itu buat form yang tidak ada sangkut pautnya ama database. Contohnya kita mau buat form Contact Us, yang kalo user submit langsung kirim email, sehingga gak perlu database…

Tapi kalo misalnya buat form untuk dari beberapa tabel, sepertinya memang cocok pakai CFormModel juga yah~

Thanks atas infonya, agan aqge

contoh kasus gan…biar clear…kayaknya keren jg tp Qianq bilang diversi 1.1.6 akan ada Query genarete…jadi kalau mau query lebih leluasa

contohnya kya gini klo menggunakan CActiveForm di controller-nya :





// t_agentContoller.php

public function actionCreate(){

	


if(isset($_POST['t_agent']))

{

   $model->attributes=$_POST['t_agent'];  // paket kiriman POST tiba disini


   if(!empty($model->ID_Location)){

   for($i=1; $i>=count($model->ID_Location); $i++<img src='http://www.yiiframework.com/forum/public/style_emoticons/default/wink.gif' class='bbc_emoticon' alt=';)' />

	$location = new t_location;   //asumsi tabel one to many(1 orang bs punya bnyk email)

	$location ->ID_Location = $model->Location;

	$location ->ID_User = Yii::app()->user->id;

        $location ->save();   //  save ke model t_location

    }

    }


    if($model->save())       //   save ke model t_agent

      $this->redirect(array('t_agent/admin/'. $redirect));




}



klo menggunakan CFormModel sy blum pernah… he heee…

mungkin bawah ane bisa.

kaya nya gini deh mas crash

di action




public function actionSimpanData(){


   $modelform = new ModelFormpendaftaran;

    if(isset($_POST['ModelFormpendaftaran'])){

        

        $modelform->attributes = $_POST['ModelFormpendaftaran'];

        $modelform->save();

   }


}



di ModelFormpendaftaran




public function save(){

     $modelAR1 = new ModelAR1;

     $modelAR1->attributes = $this->attributes;

     $modelAR1->save();

   

     //nah kalo ada yang perlu di obrak-oabrik silahkan disini juga

    

    $modelAR2 = new ModelAR2;

    $modelAR2->attributes = $this->attributes;

    if($modelAR1->syarat > kondisi) $modelAR2->akibat = "Hacurkan";

    //dan porak-poranda lainnya,

    $modelAR2->save();


}




semoga membantu

oh, brarti yg berbeda tinggal tambahkan public function save(), kemudian tinggal instance semua model.

$this->attributes mengacu ke semua POST yg dikirim melalui form? baik itu buat $modelAR1, $modelAR2, etc…

di public function rules() ModelFormpendaftaran, apakah perlu ditambahkan atribut dari model2x yg lain?

thanks for sharing.

tepat gan… wah oom fastcrash emang cerdas…

kalo yang tambahan rule saya rasa perlu, paling tidak untuk rule safe tho… (kalo tentang rule ane gaptek gan hehehe )…

bener juga ya. smart code … ^^

iya juga sih…

hmm… nice gan…

gw pake nya AR dgn 2 model.ribet di salah satu controller sedangkan yang 1 lagi engga kepake…aneh juga …

setelah melihat ini baru ngerti.

abis di tutorial mah ga terlalu jelas sih,ehhhee

yups ak juga pake CFormModel untuk nangani inputan lebih dari 1 model,

jadi lebih rapi dan simple

Wah mantaps…!

Dipikir2 iya juga sih, ane juga pernah bikin kyk gitu.

ane bikin kyk gini.

Dimodel gini


<?php 

public funcion Inputdataasal();

{

    $nik = $this->nik;

    $karyawan = karyawan::model()->findByAttributes(array('nik'=>$nik));

    $objidLama = $karyawan->objidposisi;

    $posisiLama = posisi::model()->findByAttributes(array('objidposisi'=>$objidLama));

    //kebawah ini masukin data $this->attribut = $var->attribut

    $this->nama_lengkap = $karyawan->nama;

    ...

    ...

    ...

}

?>

Di Controller sebelum model->save() ane cukup manggil kyk gini


 <?php $model->Inputdataasal(); ?>

tapi karena ud kebiasaan ane ngubek di controller,jadi sampe sekarang masih aja ngubek di controller :P