Yii Framework Forum: Validar Formularios Con Ajax - Yii Framework Forum

Jump to content

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

Validar Formularios Con Ajax Rate Topic: -----

#1 User is offline   Jonathan Morales Salazar 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 25
  • Joined: 08-January 14

Posted 16 April 2014 - 08:03 AM

estoy haciendo una validación de recuperación de contraseñas pero tengo dos problemas: el primero que cuando envío un dato vacío se limpia el formulario perdiendo el que ya había ingresado, el segundo es que no se comparan las contraseñas: este es mi formulario:

<?php
$form=$this->beginWidget('CActiveForm', array(
	'id'=>'usuario-form',
	'enableAjaxValidation'		=>true,
	'enableClientValidation'	=> false,
));
?>


este es el método de validación

public function actionNewpass($id)
        {
            $model = new Usuario('recover');
            
            $user = base64_decode($id);
            
//             print_r($_POST);exit;
            
            if(isset($_POST['Usuario']['password']))
            {   
            	if($model->validate()){
            		$password = $model->hashPassword($_POST['Usuario']['password'], $session = $model->generateSalt());
            		$sql = "UPDATE `usuario` SET `password` = '" . $password . "', `session` = '" . $session . "' WHERE `id` = $user;";
            		$connection= Yii::app()->db;
            		$command=$connection->createCommand($sql);
            		$command->execute();
            		
            		Yii::app()->user->setFlash('success', "Contraseña actualizada exitosamente!");
            		$this->redirect(array('/site/login'));
            	}
                //---------------------------------------------------------------------------------------------
            }
            
            if(isset(Yii::app()->user->id)){
                $this->redirect(array('/site/index'));
            }else{
                $this->render('newpass',  array('id'=>$user, 'model' => $model) );
            }
            
        }


y estas son las reglas

array('password, repeat_password', 'required', 'on'=>'register, recover', 'message'=>'campo requerido: {attribute}'),
array('password', 'compare', 'compareAttribute'=>'repeat_password', 'on'=>'register, recover', 'message'=>'las contraseñas no coinciden'),


de antemano, gracias por la ayuda que me puedan brindar, aún hay muchas cosas que no entiendo de yii
0

#2 User is offline   bluyell 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 222
  • Joined: 28-October 11

Posted 16 April 2014 - 10:23 AM

pienso que es por esto: " if(isset($_POST['Usuario']['password'])) " estas haciendo una mezcla muy rara, usando el mecanismo de CFormModel y haciendolo a la vieja escuela...o usas uno, o usas el otro...

veo que sabes lo que son los escenarios ya que has indicado uno: "recover", pero, pasale al model todos los atributos del post mediante:

if(isset($_POST["Usuario"])){
   $model->attributes = $_POST["Usuario"];
}



será el escenario en tu definicion de reglas el que traiga uno o otro campo necesario desde el post hacia los atributos del modelo.
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