Buenas Tardes.
Estoy realizando una aplicación con el framework y necesito ayuda para validar datos tabulados.
Lo que sucede es que estoy utilizando 3 veces el mismo modelo, y necesito validar cada modelo de manera independiente. Y lo que pasa es que al cargar el primer modelo con sus respectivo campos, el segundo modelo (modelConyugeCliente) al momento de validar me dice que ya se encuentra validado debido a que valida los campos del modelo y no de los formularios tabulados.
No se si me explico bien, soy nuevo en Yii y es mi primer proyecto.
//controlador
public function actionCreate()
{
$model=new Cliente;
$modelReferenciaCliente=new Cliente;
$modelAvalCliente=new Cliente;
$modelConyugeCliente=new Cliente;
$modelBanco=new BancoCliente;
$modelAntecedentesLaborales=new AntecedenteLaboral;
// Uncomment the following line if AJAX validation is needed
//$this->performAjaxValidation($model);
if(isset($_POST['Cliente'], $_POST['BancoCliente'], $_POST['AntecedenteLaboral']))
{
$exito0=false;
$exito1=false;
$exito2=false;
$model->attributes=$_POST['Cliente'];
$modelBanco->attributes=$_POST['BancoCliente'];
$modelConyugeCliente->attributes=$_POST['Cliente'][1];
$modelAvalCliente->attributes=$_POST['Cliente'][2];
$modelReferenciaCliente->attributes=$_POST['Cliente'][3];
if($model->id_tipopersona==1){
$model->setScenario('clienteNuevoNatural');
}
if($model->id_tipopersona==2){
$model->setScenario('clienteNuevoJuridico');
}
if($_POST["conyuge"]==1){
$modelConyugeCliente->setScenario('validarConyuge');
}
if($model->validate()){
$transaction=Yii::app()->db->beginTransaction();
$exito0=$model->save(false);
if($modelBanco->validate()){
$idCliente=$model->primaryKey;
$modelBanco->id_cliente=$idCliente;
$exito1=$modelBanco->save(false);
if($modelAntecedentesLaborales->validate()){
$idCliente=$model->primaryKey;
$modelAntecedentesLaborales->id_cliente=$idCliente;
$exito2=$modelAntecedentesLaborales->save(false);
}else{
$transaction->rollBack();
}
}else{
$transaction->rollBack();
}
}
if($exito0==true && $exito1==true && $exito2==true ){
$transaction->commit();
$this->redirect(array('view','id'=>$model->id_cliente));
}
}
$this->render('create',array(
'model'=>$model,
'modelBanco'=>$modelBanco,
'modelAntecedentesLaborales'=>$modelAntecedentesLaborales,
'modelReferenciaCliente'=>$modelReferenciaCliente,
'modelAvalCliente'=>$modelAvalCliente,
'modelConyugeCliente'=>$modelConyugeCliente,
));
}
//vista
<div class="form">
<?php $form=$this->beginWidget('CActiveForm', array(
'id'=>'cliente-form',
'enableAjaxValidation'=>false,
)); ?>
<p class="note">Fields with <span class="required">*</span> are required.</p>
<?php echo $form->errorSummary($model); ?>
<fieldset>
<legend><?php echo $form->labelEx($model,'id_tipopersona'); ?></legend>
<div class="row">
<?php echo $form->radioButtonList($model,'id_tipopersona', $opcionesTipoPersona,array('class'=>'sexoCliente')); ?>
<?php echo $form->error($model,'id_tipopersona'); ?>
</div>
</fieldset>
<fieldset>
<legend>Datos Clientes</legend>
<div class="row">
<?php echo $form->labelEx($model,'codigo'); ?>
<?php echo $form->textField($model,'codigo',array('size'=>50,'maxlength'=>50)); ?>
<?php echo $form->error($model,'codigo'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($model,'seg_nombre'); ?>
<?php echo $form->textField($model,'seg_nombre',array('size'=>50,'maxlength'=>50)); ?>
<?php echo $form->error($model,'seg_nombre'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($model,'ape_paterno'); ?>
<?php echo $form->textField($model,'ape_paterno',array('size'=>50,'maxlength'=>50)); ?>
<?php echo $form->error($model,'ape_paterno'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($model,'ape_materno'); ?>
<?php echo $form->textField($model,'ape_materno',array('size'=>50,'maxlength'=>50)); ?>
<?php echo $form->error($model,'ape_materno'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($model,'fec_nacimiento'); ?>
<?php $this->widget('zii.widgets.jui.CJuiDatePicker',array(
'attribute'=>'fec_nacimiento',
'model'=>$model,
'language' => 'es',
// additional javascript options for the date picker plugin
'options'=>array(
'showAnim'=>'fold',
),
'options'=>array(
'dateFormat'=>'dd/mm/yy'
),
));
?>
<?php echo $form->error($model,'fec_nacimiento'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($model,'direccion'); ?>
<?php echo $form->textField($model,'direccion',array('size'=>50,'maxlength'=>50)); ?>
<?php echo $form->error($model,'direccion'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($model,'dir_postal'); ?>
<?php echo $form->textField($model,'dir_postal',array('size'=>50,'maxlength'=>50)); ?>
<?php echo $form->error($model,'dir_postal'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($model,'email'); ?>
<?php echo $form->textField($model,'email',array('size'=>50,'maxlength'=>50)); ?>
<?php echo $form->error($model,'email'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($model,'telefono'); ?>
<?php echo $form->textField($model,'telefono',array('size'=>50,'maxlength'=>50)); ?>
<?php echo $form->error($model,'telefono'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($model,'celular'); ?>
<?php echo $form->textField($model,'celular',array('size'=>50,'maxlength'=>50)); ?>
<?php echo $form->error($model,'celular'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($model,'nacionalidad'); ?>
<?php echo $form->textField($model,'nacionalidad',array('size'=>50,'maxlength'=>50)); ?>
<?php echo $form->error($model,'nacionalidad'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($model,'id_separacionbienes'); ?>
<?php $this->widget('ext.select2.ESelect2',array(
'model'=>$model,
'attribute'=>'id_separacionbienes',
'data'=>$opcionesSeparacionBienes,
)); ?>
<?php echo $form->error($model,'id_separacionbienes'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($model,'nombre'); ?>
<?php echo $form->textField($model,'nombre',array('size'=>50,'maxlength'=>50)); ?>
<?php echo $form->error($model,'nombre'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($model,'id_sexo'); ?>
<?php echo $form->radioButtonList($model,'id_sexo', $opcionesSexo,array('class'=>'sexoCliente')); ?>
<?php echo $form->error($model,'id_sexo'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($model,'rut'); ?>
<?php echo $form->textField($model,'rut',array('size'=>50,'maxlength'=>50)); ?>
<?php echo $form->error($model,'rut'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($model,'id_comuna'); ?>
<?php $this->widget('ext.select2.ESelect2',array(
'model'=>$model,
'attribute'=>'id_comuna',
'data'=>$opcionesComuna,
)); ?>
<?php echo $form->error($model,'id_comuna'); ?>
</div>
</fieldset>
<fieldset>
<legend>Datos Conyuge</legend>
<div class="row">
<?php echo CHtml::label('Tiene Conyuge?',''); ?>
<?php echo CHtml::radioButtonList('conyuge',$conyuge, $opcionesBasicasSiNo,array('class'=>'conyuge'),array('separator'=>'')); ?>
</div>
<div class="formularioConyuge" style="display: none">
<div class="row">
<?php echo $form->labelEx($model,'id_conyuge'); ?>
<?php echo $form->textField($model,'id_conyuge'); ?>
<?php echo $form->error($model,'id_conyuge'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($modelConyugeCliente,'[1]nombre'); ?>
<?php echo $form->textField($modelConyugeCliente,'[1]nombre'); ?>
<?php echo $form->error($modelConyugeCliente,'[1]nombre'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($modelConyugeCliente,'[1]seg_nombre'); ?>
<?php echo $form->textField($modelConyugeCliente,'[1]seg_nombre'); ?>
<?php echo $form->error($modelConyugeCliente,'[1]seg_nombre'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($modelConyugeCliente,'[1]ape_paterno'); ?>
<?php echo $form->textField($modelConyugeCliente,'[1]ape_paterno'); ?>
<?php echo $form->error($modelConyugeCliente,'[1]ape_paterno'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($modelConyugeCliente,'[1]direccion'); ?>
<?php echo $form->textField($modelConyugeCliente,'[1]direccion'); ?>
<?php echo $form->error($modelConyugeCliente,'[1]direccion'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($modelConyugeCliente,'[1]celular'); ?>
<?php echo $form->textField($modelConyugeCliente,'[1]celular'); ?>
<?php echo $form->error($modelConyugeCliente,'[1]celular'); ?>
</div>
</div>
</fieldset>
<fieldset>
<legend>Datos Aval</legend>
<div class="row">
<?php echo CHtml::label('Tiene Aval?',''); ?>
<?php echo CHtml::radioButtonList('aval',$aval, $opcionesBasicasSiNo,array('class'=>'conyuge'),array('separator'=>'')); ?>
</div>
<div class="formularioAval" style="display: none">
<div class="row">
<?php echo $form->labelEx($model,'id_aval'); ?>
<?php echo $form->textField($model,'id_aval'); ?>
<?php echo $form->error($model,'id_aval'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($modelAvalCliente,'[2]nombre'); ?>
<?php echo $form->textField($modelAvalCliente,'[2]nombre'); ?>
<?php echo $form->error($modelAvalCliente,'[2]nombre'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($modelAvalCliente,'[2]seg_nombre'); ?>
<?php echo $form->textField($modelAvalCliente,'[2]seg_nombre'); ?>
<?php echo $form->error($modelAvalCliente,'[2]seg_nombre'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($modelAvalCliente,'[2]ape_paterno'); ?>
<?php echo $form->textField($modelAvalCliente,'[2]ape_paterno'); ?>
<?php echo $form->error($modelAvalCliente,'[2]ape_paterno'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($modelAvalCliente,'[2]direccion'); ?>
<?php echo $form->textField($modelAvalCliente,'[2]direccion'); ?>
<?php echo $form->error($modelAvalCliente,'[2]direccion'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($modelAvalCliente,'[2]direccion'); ?>
<?php echo $form->textField($modelAvalCliente,'[2]direccion'); ?>
<?php echo $form->error($modelAvalCliente,'[2]direccion'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($modelAvalCliente,'[2]celular'); ?>
<?php echo $form->textField($modelAvalCliente,'[2]celular'); ?>
<?php echo $form->error($modelAvalCliente,'[2]celular'); ?>
</div>
</div>
</fieldset>
<fieldset>
<legend>Datos Referencia</legend>
<div class="row">
<?php echo CHtml::label('Tiene Referencia?',''); ?>
<?php echo CHtml::radioButtonList('referencia',$referencia, $opcionesBasicasSiNo,array('class'=>'referencia'),array('separator'=>'')); ?>
</div>
<div class="formularioReferencia" style="display: none">
<div class="row">
<?php echo $form->labelEx($model,'id_referencia'); ?>
<?php echo $form->textField($model,'id_referencia'); ?>
<?php echo $form->error($model,'id_referencia'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($modelReferenciaCliente,'[3]nombre'); ?>
<?php echo $form->textField($modelReferenciaCliente,'[3]nombre'); ?>
<?php echo $form->error($modelReferenciaCliente,'[3]nombre'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($modelReferenciaCliente,'[3]seg_nombre'); ?>
<?php echo $form->textField($modelReferenciaCliente,'[3]seg_nombre'); ?>
<?php echo $form->error($modelReferenciaCliente,'[3]seg_nombre'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($modelReferenciaCliente,'[3]ape_paterno'); ?>
<?php echo $form->textField($modelReferenciaCliente,'[3]ape_paterno'); ?>
<?php echo $form->error($modelReferenciaCliente,'[3]ape_paterno'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($modelReferenciaCliente,'[3]direccion'); ?>
<?php echo $form->textField($modelReferenciaCliente,'[3]direccion'); ?>
<?php echo $form->error($modelReferenciaCliente,'[3]direccion'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($modelReferenciaCliente,'[3]celular'); ?>
<?php echo $form->textField($modelReferenciaCliente,'[3]celular'); ?>
<?php echo $form->error($modelReferenciaCliente,'[3]celular'); ?>
</div>
</div>
</fieldset>
<fieldset>
<legend>Datos Bancarios</legend>
<div class="row">
<?php echo $form->labelEx($modelBanco,'id_banco'); ?>
<?php $this->widget('ext.select2.ESelect2',array(
'model'=>$modelBanco,
'attribute'=>'id_banco',
'data'=>$opcionesBanco,
));
?>
<?php echo $form->error($modelBanco,'id_banco'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($modelBanco,'id_tipocuenta'); ?>
<?php $this->widget('ext.select2.ESelect2',array(
'model'=>$modelBanco,
'attribute'=>'id_tipocuenta',
'data'=>$opcionesTipoCuenta,
));
?>
<?php echo $form->error($modelBanco,'id_tipocuenta'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($modelBanco,'numero'); ?>
<?php echo $form->textField($modelBanco,'numero'); ?>
<?php echo $form->error($modelBanco,'numero'); ?>
</div>
</fieldset>
<fieldset>
<legend>Antecedentes Laborales</legend>
<div class="row">
<?php echo $form->labelEx($modelAntecedentesLaborales,'nom_empresa'); ?>
<?php echo $form->textField($modelAntecedentesLaborales,'nom_empresa'); ?>
<?php echo $form->error($modelAntecedentesLaborales,'nom_empresa'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($modelAntecedentesLaborales,'ant_empresa'); ?>
<?php echo $form->textField($modelAntecedentesLaborales,'ant_empresa'); ?>
<?php echo $form->error($modelAntecedentesLaborales,'ant_empresa'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($modelAntecedentesLaborales,'tel_empresa'); ?>
<?php echo $form->textField($modelAntecedentesLaborales,'tel_empresa'); ?>
<?php echo $form->error($modelAntecedentesLaborales,'tel_empresa'); ?>
</div>
</fieldset>
<fieldset>
<legend>Datos Empresa</legend>
<div class="row">
<?php echo $form->labelEx($model,'rut_empresa'); ?>
<?php echo $form->textField($model,'rut_empresa'); ?>
<?php echo $form->error($model,'rut_empresa'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($model,'gir_empresa'); ?>
<?php echo $form->textField($model,'gir_empresa',array('size'=>50,'maxlength'=>50)); ?>
<?php echo $form->error($model,'gir_empresa'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($model,'rep_legal'); ?>
<?php echo $form->textField($model,'rep_legal',array('size'=>50,'maxlength'=>50)); ?>
<?php echo $form->error($model,'rep_legal'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($model,'notaria'); ?>
<?php echo $form->textField($model,'notaria',array('size'=>50,'maxlength'=>50)); ?>
<?php echo $form->error($model,'notaria'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($model,'fec_rep_legal'); ?>
<?php $this->widget('zii.widgets.jui.CJuiDatePicker',array(
'attribute'=>'fec_rep_legal',
'model'=>$model,
'language' => 'es',
// additional javascript options for the date picker plugin
'options'=>array(
'showAnim'=>'fold',
),
'options'=>array(
'dateFormat'=>'dd/mm/yy'
),
));
?>
<?php echo $form->error($model,'fec_rep_legal'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($model,'fech_con_sociedad'); ?>
<?php $this->widget('zii.widgets.jui.CJuiDatePicker',array(
'attribute'=>'fech_con_sociedad',
'model'=>$model,
'language' => 'es',
// additional javascript options for the date picker plugin
'options'=>array(
'showAnim'=>'fold',
),
'options'=>array(
'dateFormat'=>'dd/mm/yy'
),
));
?>
<?php echo $form->error($model,'fech_con_sociedad'); ?>
</div>
</fieldset>
<fieldset>
<legend>Estado de Cliente</legend>
<div class="row">
<?php echo $form->labelEx($model,'id_estadocliente'); ?>
<?php $this->widget('ext.select2.ESelect2',array(
'model'=>$model,
'attribute'=>'id_estadocliente',
'data'=>$opcionesEstadoCliente,
)); ?>
<?php echo $form->error($model,'id_estadocliente'); ?>
</div>
</fieldset>
<div class="row buttons">
<?php echo CHtml::submitButton($model->isNewRecord ? 'Create' : 'Save'); ?>
</div>
<?php $this->endWidget(); ?>
</div><!-- form -->