Yii Framework Forum: Validar Formularios Tabulados - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Validar Formularios Tabulados Rate Topic: -----

#1 User is offline   chispe 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 4
  • Joined: 10-April 13

Posted 10 April 2013 - 02:16 PM

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 -->

0

#2 User is offline   mauricioschneider 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 152
  • Joined: 16-August 10
  • Location:Santiago, Chile

Posted 11 April 2013 - 10:24 AM

No tiene relación con el problema en sí, pero veo en tu código que recibes en tu request $_POST['AntecedentesLaborales'] pero no asignas los valores del arreglo a los atributos del modelo $modelAntecedentesLaborales.
0

#3 User is offline   lagogz 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 478
  • Joined: 30-November 12
  • Location:Galiza

Posted 15 April 2013 - 05:44 AM

Te paso este enlace, q en principio debería ayudarte en tu problema:

Validar 2 instancias de un modelo en el mismo form

Un saludo.
-----------------------------------------------------------------------------------------------
------------------------------- VISITEN FOCUCHASART --------------------------------
-----------------------------------------------------------------------------------------------
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users