Validación Ajax En Ventana Modal


(Juan Diego1990) #1

Buenas tardes para todos,

El título es muy diciente, tengo un problema referente a la validación de un formulario en una ventana modal de BootStrap, la idea es que valide según las reglas alojadas en el modelo pero no sé que sucede pues sigue ejecutando el action saltándose la validación Ajax.

Después de esta duda me gustaría saber que en caso tal de realizar un submit desde esta ventana modal, esta ventana no se cerrara con el fin de visualizar la validación proveniente de la respuesta del servidor.

Muchas gracias.


Turkce Yii Forumdan Selamlar
Turkce Yii Forumdan Selamlar
(Almeis) #2

podrias mostrar algo tu codigo ?? para poder analizar que esta pasando saludos !!


(Juan Diego1990) #3

Según he leído el problema se genera en varias personas al llamar una vista por el método renderPartial,

Action controlador:




 public function actionRegistro()

	{

		

            $model=new Usuario;

            $bool=false;

            $this->performAjaxValidation($model);

               

               

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

		{

                     $model->usu_estado=2;

                     

                     $model->attributes= General::arrayChangeValuesToUpper($_POST['Usuario']);

                  

		     if($model->validate()){

                        

                         if($model->save(false)){

                             $bool=true;

                             $this->renderPartial('registro',array('model'=>$model,'bool'=>$bool));

                         }

				

                     }

                     

		}

                

                

                $this->renderPartial('registro',array('model'=>$model,'bool'=>$bool));

	}




Regla del modelo:




public function rules()

	{

		// NOTE: you should only define rules for those attributes that

		// will receive user inputs.

		return array(

			array('tid_codigo, usu_identificacion, fic_codigo, usu_nombre, usu_apellidos, usu_correo, userid, usu_clave, pre_codigo, usu_res_secr, confiPassword', 'required'),

			array('pre_codigo', 'numerical', 'integerOnly'=>true),

			array('tid_codigo', 'length', 'max'=>2),

			array('usu_identificacion', 'length', 'max'=>12),

			array('fic_codigo', 'length', 'max'=><img src='http://www.yiiframework.com/forum/public/style_emoticons/default/cool.gif' class='bbc_emoticon' alt='8)' />,

			array('usu_nombre, usu_res_secr', 'length', 'max'=>30),

			array('usu_apellidos', 'length', 'max'=>50),

			array('usu_correo', 'length', 'max'=>80),

                        array('usu_correo','email'),

			array('userid', 'length', 'max'=>15,'min'=>6),

                        array('userid','unique','className'=>'Usuario'),

                        array('usu_clave','compare','compareAttribute'=>'confiPassword','operator'=>'==','message'=>  Yii::t('es', 'The passwords are not the same')),

			array('usu_clave, confiPassword', 'length', 'max'=>12,'min'=>6),

			array('usu_estado', 'length', 'max'=>9),

			array('usu_ult_acce, usu_fec_crea, usu_fec_modi', 'safe'),

			// The following rule is used by search().

			// Please remove those attributes that should not be searched.

			array('tid_codigo, usu_identificacion, fic_codigo, usu_nombre, usu_apellidos, usu_correo, userid, usu_clave, pre_codigo, usu_res_secr, usu_estado, usu_ult_acce, usu_fec_crea, usu_fec_modi', 'safe', 'on'=>'search'),

		);

	}



Vista llamada por renderPartial:


<div class="sectionRegistro">

                <fieldset class="formu">


                    <legend style="text-align: center;"><b>REGISTRE SUS DATOS PERSONALES</b></legend>

                    <div class="form" style="margin-left: 30%;">

                         <?php echo CHtml::image(Yii::app()->theme->baseUrl.'/img/hermeslogo.png','', array('width'=>'200px','height'=>'200px', 'style'=>'margin-left: 80px;'));?>

                                <?php 

                                

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

                                        'id'=>'usuario-form',

                                        'enableAjaxValidation'=>true,

                                        'enableClientValidation'=>true,

                                        'clientOptions'=>array(

                                                'validateOnSubmit'=>true,

                                        ),

                                )); 

                                    

                                echo $form->errorSummary($model); 

                               

                                ?>


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


                        

                                        <div class="row">

                                                <?php echo $form->labelEx($model,Yii::t('es','fic_codigo')); 

                                                      echo $form->dropDownList($model,'fic_codigo', CHtml::listData(Ficha::model()->findAll(), 'fic_codigo', 'fic_nombre'),array('empty'=>'-- Seleccione --')); 

                                                      echo $form->error($model,'fic_codigo'); ?>

                                        </div>

                        

                                         <div class="row">

                                                <?php echo $form->labelEx($model,Yii::t('es','tid_codigo')); 

                                                      echo $form->dropDownList($model,'tid_codigo', CHtml::listData(TipoIdentificacion::model()->findAll(), 'tid_codigo', 'tid_nombre'),array('empty'=>'-- Seleccione --')); 

                                                      echo $form->error($model,'tid_codigo'); ?>

                                        </div>

                        

                                        <div class="row">

                                                <?php echo $form->labelEx($model,Yii::t('es','usu_identificacion')); 

                                                      echo $form->textField($model,'usu_identificacion'); 

                                                      echo $form->error($model,'usu_identificacion'); ?>

                                        </div>

                                        <div class="row">

                                                <?php echo $form->labelEx($model,Yii::t('es','usu_nombre')); 

                                                      echo $form->textField($model,'usu_nombre'); 

                                                      echo $form->error($model,'usu_nombre'); ?>

                                        </div>

                        

                                        <div class="row">

                                               <?php

                                                    echo $form->labelEx($model,Yii::t('es','usu_apellidos')); 

                                                      echo $form->textField($model,'usu_apellidos'); 

                                                      echo $form->error($model,'usu_apellidos');

                                               ?>

                                        </div>

                        

                                         <div class="row">

                                                <?php echo $form->labelEx($model,  Yii::t('es','usu_correo')); 

                                                      echo $form->textField($model,'usu_correo'); 

                                                      echo $form->error($model,'usu_correo'); ?>

                                        </div>

                        

                                        <div class="row">

                                               <?php

                                                    echo $form->labelEx($model,Yii::t('es','userid')); 

                                                      echo $form->textField($model,'userid'); 

                                                      echo $form->error($model,'userid');

                                               ?>

                                        </div>

                        

                                       <div class="row">

                                               <?php

                                                    echo $form->labelEx($model,Yii::t('es','usu_clave')); 

                                                      echo $form->PasswordField($model,'usu_clave'); 

                                                      echo $form->error($model,'usu_clave');

                                               ?>

                                       </div>

                        

                                        <div class="row">

                                               <?php

                                                      echo $form->labelEx($model,Yii::t('es','confiPassword')); 

                                                      echo $form->PasswordField($model,'confiPassword'); 

                                                      echo $form->error($model,'confiPassword');

                                               ?>

                                       </div>

                        

                                        <div class="row">

                                                <?php echo $form->labelEx($model,Yii::t('es','pre_codigo')); 

                                                      echo $form->dropDownList($model,'pre_codigo', CHtml::listData(PreguntaSecreta::model()->findAll(), 'pre_codigo', 'pre_pregunta'),array('empty'=>'-- Seleccione --')); 

                                                      echo $form->error($model,'pre_codigo'); ?>

                                        </div>

                        

                                           <div class="row">

                                               <?php

                                                    echo $form->labelEx($model,Yii::t('es','usu_res_secr')); 

                                                      echo $form->textField($model,'usu_res_secr'); 

                                                      echo $form->error($model,'usu_res_secr');

                                               ?>

                                       </div>

                                       

       

                                      


                                        <div class="row buttons" style="margin-left: 10%;">

                                                <?php echo CHtml::submitButton(Yii::t('es', 'Register'),array('class'=>'btn btn-primary')); ?>

                                        </div>

                                       <br/>

                                        <div class="row" style="margin-left: 10%;">

                                                <?php echo CHtml::link(CHtml::button('Regresar al ingreso',array('class'=>'btn btn-success')), 'login/index'); ?>

                                        </div>


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

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


                </fieldset>          

          </div>



El problema debe ser teórico creo yo, por ello seguiré leyendo sobre esta función y como funcionan estas validaciones por fuera de un template.