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…
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~
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…
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();
}