Hola a todos les agradeceria que me ayuden en este topico, estoy usando la extension multimodelform, para manejar dos modelos, el modelo Cliente y el modelo Firmantes, donde a cada cliente le pueden corresponder varios firmantes, por lo que tengo una relacion uno a muchos entre las tablas firmantes y clientes, o sea:
//en la tabla firmantes
'idProducto' => array(self::BELONGS_TO, 'Clientes', 'CodCliente'),
El problema es que cuando creo un cliente o lo modifico, y le pongo varios firmantes, solo me crea uno, o me actualiza uno.
mi trozo de codigo del controlador es:
public function actionCreate() {
Yii::import('ext.multimodelform.MultiModelForm');
$model = new Clientes;
$Fichas = new Firmantes;
$validatedFichas = array(); //ensure an empty array
if (isset($_POST['Clientes'])) {
$model->attributes = $_POST['Clientes'];
if (//validate detail before saving the master
MultiModelForm::validate($Fichas, $validatedFichas, $deleteItems) &&
$model->save()
) {
//the value for the foreign key 'groupid'
$masterValues = array('CodCliente' => $model->CodCliente);
if (MultiModelForm::save($Fichas, $validatedFichas, $deleteFichas, $masterValues))
$this->redirect(array('view', 'id' => $model->CodCliente));
}
}
$this->render('create', array(
'model' => $model,
//submit the member and validatedItems to the widget in the edit form
'member' => $Fichas,
'validatedFichas' => $validatedFichas,
));
}
public function actionUpdate($id) {
Yii::import('ext.multimodelform.MultiModelForm');
$model = $this->loadModel($id); //the Group model
$Fichas = new Firmantes;
$validatedFichas = array(); //ensure an empty array
if (isset($_POST['Clientes'])) {
$model->attributes = $_POST['Clientes'];
//the value for the foreign key 'groupid'
$masterValues = array('CodCliente' => $model->CodCliente);
if (//Save the master model after saving valid members
MultiModelForm::save($Fichas, $validatedFichas, $deleteFichas, $masterValues) &&
$model->save()
)
$this->redirect(array('view', 'id' => $model->CodCliente));
}
$this->render('update', array(
'model' => $model,
//submit the member and validatedItems to the widget in the edit form
'member' => $Fichas,
'validatedFichas' => $validatedFichas,
));
}
Mi codigo de la vista es:
<?php
/* @var $this ClientesController */
/* @var $model Clientes */
$validatedFichas = array();
$Fichas = new Firmantes;
$items = array();
$detalle = array();
$FichasFormConfig = array();
/* @var $form CActiveForm */
?>
<div class="form wide">
<?php
$form = $this->beginWidget('CActiveForm', array(
'id' => 'clientes-form',
'enableAjaxValidation' => false,
));
?>
<?php
//show errorsummary at the top for all models
//build an array of all models to check
echo $form->errorSummary(array_merge(array($model), $validatedFichas));
?>
<div class="panel-default">
<div class="panel panel-default">
<table>
<tr>
<div class="panel-heading">
<b contextmenu="Crear Cliente">Crear Clientes</b>
<b>(</b>
<b>Los campos con <span class="required">*</span> son necesarios.</b>
<b>)</b>
</div>
</tr>
</table>
<hr>
<table>
<tr>
<td style="padding: 4px 10px 4px 0px; width: 130px;">
<?php echo $form->labelEx($model, 'CodCliente'); ?>
<?php echo $form->textField($model, 'CodCliente', array('size' => 8, 'maxlength' => 12)); ?> <?php echo $form->error($model, 'CodCliente'); ?> </td>
<td>
<?php {
echo $form->labelEx($model, 'Descripcion');
?>
<?php echo $form->textArea($model, 'Descripcion', array('rows' => 1, 'cols' => 25, 'readonly' => FALSE)); ?>
<?php
echo $form->error($model, 'Descripcion');
}
?>
</td>
<td>
<?php echo $form->labelEx($model, 'Sucursal Ban'); ?>
<?php echo $form->textField($model, 'sucursal', array('size' => 12, 'maxlength' => 12)); ?>
<?php echo $form->error($model, 'sucursal'); ?>
</td>
</tr>
<tr>
<td style="padding: 4px 10px 4px 0px; width: 130px;">
<?php echo $form->labelEx($model, 'CodREUP'); ?>
<?php echo $form->textField($model, 'CodREUP', array('size' => 8, 'maxlength' => 12)); ?>
<?php echo $form->error($model, 'CodREUP'); ?>
</td>
<td>
<?php {
echo $form->labelEx($model, 'Direccion');
?>
<?php echo $form->textArea($model, 'Direccion', array('rows' => 1, 'cols' => 25, 'readonly' => FALSE)); ?>
<?php
echo $form->error($model, 'Direccion');
}
?>
</td>
<td>
<?php echo $form->labelEx($model, 'Código NIT'); ?>
<?php echo $form->textField($model, 'NIT', array('size' => 8, 'maxlength' => 12)); ?>
<?php echo $form->error($model, 'NIT'); ?>
</td>
</tr>
<tr>
<td style="padding: 4px 10px 4px 0px; width: 130px;">
<?php echo $form->labelEx($model, 'CuentaCUP'); ?>
<?php echo $form->textField($model, 'CuentaCUP', array('size' => 14, 'maxlength' => 16)); ?>
<?php echo $form->error($model, 'CuentaCUP'); ?> </td>
<td style="padding: 4px 10px 4px 0px; width: 130px;">
<?php echo $form->labelEx($model, 'CodProv'); ?>
<span style="width: 240px;">
<?php
echo $form->dropDownList($model, 'CodProv', CHtml::listData(Provincias::model()->findAll(array('order' => 'Descripcion')), 'CodProv', 'Descripcion'), array(
'ajax' => array(
'type' => 'POST',
'url' => CController::createUrl('clientes/actualizarMunicipios'),
'dataType' => 'json',
'data' => array('idCodigo' => 'js:this.value'),
'success' => 'function(data) {
$("#Clientes_CodMun").html(data.municipios);
}')
)
);
?>
<?php echo $form->error($model, 'CodProv'); ?></span></td>
<td style="width: 240px;"><?php echo $form->labelEx($model, 'CodMun'); ?>
<?php echo $form->dropDownList($model, 'CodMun', array(), array('style' => 'width:150px')); ?>
</td>
</tr>
<tr>
<td style="padding: 4px 10px 4px 0px; width: 130px;">
<?php echo $form->labelEx($model, 'CuentaCUC'); ?>
<?php echo $form->textField($model, 'CuentaCUC', array('size' => 14, 'maxlength' => 16)); ?>
<?php echo $form->error($model, 'CuentaCUC'); ?> </td>
<td>
<?php echo $form->labelEx($model, 'Organismo'); ?>
<?php echo $form->dropDownList($model, 'CodOrg', CHtml::listData(Xorganismos::model()->findAll(array('order' => 'Descripcion')), 'CodOrg', 'Descripcion'));
?> <?php echo $form->error($model, 'CodOrg'); ?> </td>
<td>
<?php echo $form->labelEx($model, 'Sector'); ?>
<?php echo $form->dropDownList($model, 'Codsec', CHtml::listData(Sectores::model()->findAll(array('order' => 'NSector')), 'Codsec', 'NSector'));
?> <?php echo $form->error($model, 'Codsec'); ?> </td>
</tr>
</table>
</div>
</div>
</div>
<!-- ---------------------------------------- Detalles de las Fichas de Clientes ------------------------------------- -->
<?php
$FichasFormConfig = array(
'elements' => array(
'Nombre' => array(
'type' => 'text',
'size' => '20',
'maxlength' => 100,
'style' => 'WIDTH:100px',
),
'CI' => array(
'type' => 'text',
'size' => '11',
'maxlength' => 11,
'style' => 'WIDTH:100px',
),
'cargo' => array(
'type' => 'text',
'size' => '20',
'maxlength' => 30,
'style' => 'WIDTH:100px',
),
'Contrato' => array(
'type' => 'text',
'size' => '2',
'maxlength' => 16,
),
'Fechaf' => array(
'type' => 'date',
'language' => 'en'
),
)
);
?>
<?php
$this->widget('ext.multimodelform.MultiModelForm', array(
'id' => 'CodCliente', //the unique widget id
'formConfig' => $FichasFormConfig, //the form configuration array
'model' => $Fichas, //instance of the form model
'tableView' => true,
//if submitted not empty from the controller,
//the form will be rendered with validation errors
'validatedItems' => $validatedFichas,
//array of member instances loaded from db
'data' => $Fichas->findAll('CodCliente=:CodCliente', array(':CodCliente' => $model->CodCliente)),
'showAddItemOnError' => false,
'addItemText' => 'Agregar',
'removeText' => 'Eliminar',
'removeConfirm' => '¿ Desea eliminar lo seleccionado ?',
)
);
?>
<div class="row buttons">
<?php echo CHtml::submitButton($model->isNewRecord ? 'Crear' : 'Guardar'); ?>
</div>
<?php $this->endWidget(); ?>
</div><!-- form -->
Necesito saber donde esta el error, me urge solucionarlo