Pertanyaan tentang cara insert dan upload data ke 2 model dari 1 form

Halo para master yii.

saya ada pertanyaan dengan artikel ini http://www.yiiframework.com/wiki/19/how-to-use-a-single-form-to-collect-data-for-two-or-more-models/, dimana controller tutorial sudah saya ikuti, cuma masalah timbul di _form.php, mengenai cara penulisan 2 model in form, karena 2 model yang sama isinya yang satunya harus insert 1 kali dan update, 1 model lagi tetap terus di insert berulang-2.

cara penulisan untuk _form.php adalah seperti ini mohon koreksi.




<?php echo $form->errorSummary(array($model,$model2)); ?>


        <div class="row">

                <?php echo $form->labelEx($model,$model2,'ktp'); ?>

                <?php echo $form->textField($model,$model2,'ktp',array('size'=>20,'maxlength'=>20)); ?>

                <?php echo $form->error($model,$model2,'ktp'); ?>

        </div>


<div class="row buttons">

                <?php echo CHtml::submitButton ($model,$model2->isNewRecord ? 'Create' : 'Save'); ?>

        </div>



terus satunya lagi seperti ini




<?php echo $form->errorSummary(array($model,$model2));

     <div class="row">

                <?php echo $form->labelEx(array($model,$model2),'ktp'); ?>

                <?php echo $form->textField(array($model,$model2),'ktp',array('size'=>20,'maxlength'=>20)); ?>

                <?php echo $form->error(array($model,$model2),'ktp'); ?>

        </div>


<div class="row buttons">

                <?php echo CHtml::submitButton (array($model,$model2->isNewRecord ? 'Create' : 'Save')); ?>

        </div>



hasilnya sama saja enggak jalan tuh

gimana master mohon bimbingannya.

Nb: tadi sempat baca-2 apa harus pakai tabular input ya? terus gimana sambungin artikel yang saya baca di atas dengan artikel tabular input

Kan agan punya dua model ceritanya

saya asumsi $model ama $model2. $model adalah bagian header(jadi input sekali) dan $model2 bersifat detail (jadi input berulang2)

maka harusnya kek gini bukan?


<?php echo $form->errorSummary(array($model,$model2)); ?>

          

        <div class="row">

                <?php echo $form->labelEx($model,'ktp'); ?>

                <?php echo $form->textField($model,'ktp',array('size'=>20,'maxlength'=>20)); ?>

                <?php echo $form->error($model,'ktp'); ?>

        </div>

        <?php 

            foreach ($model2 as $key=>$detail){ ?>

             <div class="row">

                <?php echo $form->labelEx($detail,"[$key]lain"); ?>

                <?php echo $form->textField($detail,"[$key]lain"); ?>

                <?php echo $form->error($detail,"[$key]lain"); ?>

             </div>

        <?php } ?>


<div class="row buttons">

                <?php echo CHtml::submitButton ($model->isNewRecord ? 'Create' : 'Save'); ?>

        </div>




di Guide ada penjelasannya di sini

http://www.yiiframework.com/doc/guide/1.1/en/form.table

sorry gan baru reply, habis apply dulu saran agan, ada masalah timbul,

table client = $model

table dataMohon = $model2

masalah yang timbul pada waktu create form, adalah hanya form $model yang muncul sedangkan yang form $model2 tidak muncul, lalu header default yii juga tidak muncul yang lebih parah tombol submit button ikutan nghilang,

Saya sekarang lagi coba mengguunakan tabular input di $model sesuai dengan artikel, cuma masalahnya dimana saya harus taruh code batchnya, kalau di pelajari lebih detail kayaknya harus bikin halaman baru, cuma masalahnya bagaimana nyambungnya dengan form $model?

hm kurang ada gambaran…

bagaimana kalau agan coba menampilkan coding viewnya?




<?php echo $form->errorSummary(array($model,$model2)); ?>

<div class="row">

<?php echo $form->labelEx($model,'ktp'); ?>

<?php echo $form->textField($model,'ktp',array('size'=>20,'maxlength'=>20)); ?>

<?php echo $form->error($model,'ktp'); ?>

</div>


<?php foreach ($model2 as $i => $model2): ?>


<div class="row">

<?php echo $form->labelEx($model2,'[$i]alamat'); ?>

<?php echo $form->textField($model2,'[$i]alamat',array('size'=>45,'maxlength'=>45)); ?>

<?php echo $form->error($model2,'[$i]alamat'); ?>

</div>


<?php endforeach; ?>




<div class="row buttons">

<?php echo CHtml::submitButton ($model->isNewRecord ? 'Create' : 'Save'); ?>

</div>






mending foreach nya jangan pakai $model2 lagi gan, karena jadi kacau.

Coba ubah saja jadi variable lain lihat bagaimana hasilnya


<?php foreach ($model2 as $i => $mod): ?>


<div class="row">

<?php echo $form->labelEx($mod,'[$i]alamat'); ?>

<?php echo $form->textField($mod,'[$i]alamat',array('size'=>45,'maxlength'=>45)); ?>

<?php echo $form->error($mod,'[$i]alamat'); ?>

</div>

kenapa model2 nya diforeach kk?




<?php foreach ($model2 as $i => $mod): ?>


<div class="row">

<?php echo $form->labelEx($mod,'[$i]alamat'); ?>

<?php echo $form->textField($mod,'[$i]alamat',array('size'=>45,'maxlength'=>45)); ?>

<?php echo $form->error($mod,'[$i]alamat'); ?>

</div>



setau saya $form->textField tidak bisa menerima attribut pada parameter pertama ($mod), parameter pertama pada $form->textField($mod,’[$i]alamat’,array(‘size’=>45,‘maxlength’=>45)); bukannya harus instance model /$model2…

mestinya gini $form->textField($model2,’[$i]alamat’,array(‘size’=>45,‘maxlength’=>45));

saran saya gan kalo beginian mah enak dikloning aja detailnya,jadi nanti agan sediakan tombol add more…

nanti dikontrollernya tinggal diforeach dan simpen datanya aja

thanks gan atas solusinya, belum saya coba, coz kayaknya ribet, sorry gan masih newbie habis nih

Saya pakai ext multimodelform aja.

coba deh gan, mainin di controllernya,

Model1Controller




public function actionCreate()

	{

            $model=new model1;

               $model2=new model2;

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

                {

                        $model->attributes=$_POST['model1'];

                            if($model->save())

                            {

                               $ktp=$model->ktp;

                               $model2->ktp=$ktp;

                               {.. diisiin juga field2 yg lain yg ada di model2}

                               $model2->save();

                               $this->redirect(array('index'));

                            }

                }

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

                        'model'=>$model,

                        'model2'=>$model2,

                ));