Agregar nuevos campos a un formulario.

Buenos días comunidad.

Tengo el siguiente _form.php




<?php

/* @var $this FacturaController */

/* @var $model Factura */

/* @var $form CActiveForm */

?>


<div class="form">


<?php $form=$this->beginWidget('CActiveForm', array(

	'id'=>'factura-form',

	// Please note: When you enable ajax validation, make sure the corresponding

	// controller action is handling ajax validation correctly.

	// There is a call to performAjaxValidation() commented in generated controller code.

	// See class documentation of CActiveForm for details on this.

	'enableAjaxValidation'=>true,

)); ?>


	<p class="note"><?php echo Yii::t('app','Fields with');?> <span class="required">*</span> <?php echo Yii::t('app','are required.');?></p>


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


	<div class="row">

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


		<?php $this->widget ('application.extensions.CJuiDateTimePicker.CJuiDateTimePicker',

                array(

                    'model'=>$model, //Model object

                    'attribute'=>'fechaVenta', //attribute name

                    'value'=>$model->fechaVenta,

                    'mode'=>'datetime', //use "time","date" or "datetime" (default)

                    'language'=>'es',

                    'options'=>array(

                            'regional'=>'es',

                            'autoSize'=>'true',

                            'dateFormat'=>'yy-mm-dd',

                            'timeformat'=>'hh:mm',

                            'changeMonth'=>'true',

							'changeYear'=>'true',

							'yearRange'=>'-10:+0',

                            //'ampm'=>'true',

                            'timeText'=>'Horario',

                            'hourText'=>'Hora',

                            'minuteText'=>'Minuto',


                        ) // jquery plugin options

            ));

        ?>


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

	</div>


	<div class="row">

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

		<?php echo $form->dropDownList($model,'idVendedor', CHtml::listData(Vendedor::model()->findAll("activo=1"), 'idVendedor', 'nombresVendedor')); ?>

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

	</div>


	<div class="row">

		<?php echo $form->labelEx($modelDetalle,'idProducto'); ?>

		<?php echo $form->dropDownList($modelDetalle,'idProducto', CHtml::listData(Producto::model()->findAll("activo=1",array('order'=>'descripcion ASC')), 'idProducto', 'descripcion')); ?>

		<?php echo $form->error($modelDetalle,'idProducto'); ?>

	</div>


	<div class="row">

		<?php echo $form->labelEx($modelDetalle,'cantidad'); ?>

		<?php echo $form->textField($modelDetalle,'cantidad'); ?>

		<?php echo $form->error($modelDetalle,'cantidad'); ?>

	</div>


	<div class="row buttons">

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

	</div>


<?php $this->endWidget(); ?>


</div><!-- form -->



Cabe decir que este formulario depende de 2 modelos.

Lo que quiero es agregar un botón (+) los campos del $modelDetalle que serían (‘idProducto’, ‘cantidad’).

Gracias y espero sus respuestas.

Conocí esta extensión:

http://www.yiiframework.com/extension/recopy/

Cambie lo siguiente el _form.php




<?php

/* @var $this FacturaController */

/* @var $model Factura */

/* @var $form CActiveForm */

?>


<div class="form">


<?php $form=$this->beginWidget('CActiveForm', array(

	'id'=>'factura-form',

	// Please note: When you enable ajax validation, make sure the corresponding

	// controller action is handling ajax validation correctly.

	// There is a call to performAjaxValidation() commented in generated controller code.

	// See class documentation of CActiveForm for details on this.

	'enableAjaxValidation'=>true,

)); ?>


	<p class="note"><?php echo Yii::t('app','Fields with');?> <span class="required">*</span> <?php echo Yii::t('app','are required.');?></p>


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


	<div class="row">

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


		<?php $this->widget ('application.extensions.CJuiDateTimePicker.CJuiDateTimePicker',

                array(

                    'model'=>$model, //Model object

                    'attribute'=>'fechaVenta', //attribute name

                    'value'=>$model->fechaVenta,

                    'mode'=>'datetime', //use "time","date" or "datetime" (default)

                    'language'=>'es',

                    'options'=>array(

                            'regional'=>'es',

                            'autoSize'=>'true',

                            'dateFormat'=>'yy-mm-dd',

                            'timeformat'=>'hh:mm',

                            'changeMonth'=>'true',

							'changeYear'=>'true',

							'yearRange'=>'-10:+0',

                            //'ampm'=>'true',

                            'timeText'=>'Horario',

                            'hourText'=>'Hora',

                            'minuteText'=>'Minuto',


                        ) // jquery plugin options

            ));

        ?>


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

	</div>


	<div class="row">

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

		<?php echo $form->dropDownList($model,'idVendedor', CHtml::listData(Vendedor::model()->findAll("activo=1"), 'idVendedor', 'nombresVendedor')); ?>

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

	</div>


	<div class="row2">

		<div class="row">

		<?php echo $form->labelEx($modelDetalle,'idProducto'); ?>

		<?php echo $form->dropDownList($modelDetalle,'idProducto', CHtml::listData(Producto::model()->findAll("activo=1",array('order'=>'descripcion ASC')), 'idProducto', 'descripcion')); ?>

		<?php echo $form->error($modelDetalle,'idProducto'); ?>

		</div>


		<div class="row">

		<?php echo $form->labelEx($modelDetalle,'cantidad'); ?>

		<?php echo $form->textField($modelDetalle,'cantidad'); ?>

		<?php echo $form->error($modelDetalle,'cantidad'); ?>

		</div>

	</div>

	

	<?php 

 		 $this->widget('application.extensions.reCopy.ReCopyWidget', array(

     		'targetClass'=>'row2',

  		)); 

	?>


	<div class="row buttons">

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

	</div>


<?php $this->endWidget(); ?>


</div><!-- form --><?php

/* @var $this FacturaController */

/* @var $model Factura */

/* @var $form CActiveForm */

?>


<div class="form">


<?php $form=$this->beginWidget('CActiveForm', array(

	'id'=>'factura-form',

	// Please note: When you enable ajax validation, make sure the corresponding

	// controller action is handling ajax validation correctly.

	// There is a call to performAjaxValidation() commented in generated controller code.

	// See class documentation of CActiveForm for details on this.

	'enableAjaxValidation'=>true,

)); ?>


	<p class="note"><?php echo Yii::t('app','Fields with');?> <span class="required">*</span> <?php echo Yii::t('app','are required.');?></p>


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


	<div class="row">

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


		<?php $this->widget ('application.extensions.CJuiDateTimePicker.CJuiDateTimePicker',

                array(

                    'model'=>$model, //Model object

                    'attribute'=>'fechaVenta', //attribute name

                    'value'=>$model->fechaVenta,

                    'mode'=>'datetime', //use "time","date" or "datetime" (default)

                    'language'=>'es',

                    'options'=>array(

                            'regional'=>'es',

                            'autoSize'=>'true',

                            'dateFormat'=>'yy-mm-dd',

                            'timeformat'=>'hh:mm',

                            'changeMonth'=>'true',

							'changeYear'=>'true',

							'yearRange'=>'-10:+0',

                            //'ampm'=>'true',

                            'timeText'=>'Horario',

                            'hourText'=>'Hora',

                            'minuteText'=>'Minuto',


                        ) // jquery plugin options

            ));

        ?>


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

	</div>


	<div class="row">

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

		<?php echo $form->dropDownList($model,'idVendedor', CHtml::listData(Vendedor::model()->findAll("activo=1"), 'idVendedor', 'nombresVendedor')); ?>

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

	</div>


	<div class="row2">

		<div class="row">

		<?php echo $form->labelEx($modelDetalle,'idProducto'); ?>

		<?php echo $form->dropDownList($modelDetalle,'idProducto', CHtml::listData(Producto::model()->findAll("activo=1",array('order'=>'descripcion ASC')), 'idProducto', 'descripcion')); ?>

		<?php echo $form->error($modelDetalle,'idProducto'); ?>

		</div>


		<div class="row">

		<?php echo $form->labelEx($modelDetalle,'cantidad'); ?>

		<?php echo $form->textField($modelDetalle,'cantidad'); ?>

		<?php echo $form->error($modelDetalle,'cantidad'); ?>

		</div>

	</div>

	

	<?php 

 		 $this->widget('application.extensions.reCopy.ReCopyWidget', array(

     		'targetClass'=>'row2',

  		)); 

	?>


	<div class="row buttons">

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

	</div>


<?php $this->endWidget(); ?>


</div><!-- form -->



Funciona agregar y quitar campos, pero cuando agrego no me los inserta en la base de datos alguien podría explicarme que debería hacer.

Logré solucionarlo utilizando la extensión multimodelform.