Validacion de campos

Hola a todos,

Tengo una pantalla para crear usuarios, en la parte del update en la clase controller tengo el siguiente codigo que intenta hacer una actualizacion del registro pero sin que se vuelva a sobrescribir la contraseña porque tengo una funcion afterValidate que encripta(md5) lo escrito por el usuario en el campo de password, de tal forma que me quedó asi:

//significa que no hubo cambios en el campo de password

if($_POST["Usuarios"]["usu_pass"] == $model->usu_pass)

{

$param = array("usu_login"=>$_POST["Usuarios"]["usu_login"],"tipo_id"=>$_POST["Usuarios"]["tipo_id"],"usu_puesto"=>$_POST["Usuarios"]["usu_puesto"],"usu_fmod"=>date("Y-m-d H:i:s"));





//Falta validate de los campos


if($model->updateAll($param,"usu_id=:id",array(":id"=>$model->usu_id)))


  $this->redirect(array('view','id'=>$model->usu_id));

}

//en el else si hubo cambios en password

else

{

$model->attributes=$_POST['Usuarios'];


if($model->save())


	$this->redirect(array('view','id'=>$model->usu_id));

}

Este codigo me funciona a medias, porque ya no se sobre escriben las contraseñas pero al entrar al if principal se deja de hacer la validacion de los campos de tal forma que si no se cumple lo establecido en la funcion rules no importa porque aun asi intenta hacer el update, la pregunta es ¿como hago para hacer un validate(), y se tomen en cuenta las restricciones del rules(),? … intente hacer algo como $model->validate() pero siempre regresa true aunque no se cumplan los rules establecidos, supongo que es porque es diferente lo que existe en $model a lo que yo verdaderamente quiero validar que es lo que viene en el post del formulario y que guarde en la variable $param, pero como le indico que valide solo los campos en $param?

Gracias.

Ya logré hacerlo, no se si sea lo mas correcto pero funciona, si alguien sabe como hacerlo de una mejor forma hagamelo saber gracias.

Esto fue lo que hice:

$param = array("usu_login"=>$_POST["Usuarios"]["usu_login"],"tipo_id"=>$_POST["Usuarios"]["tipo_id"],"usu_puesto"=>$_POST["Usuarios"]["usu_puesto"],"usu_fmod"=>date("Y-m-d H:i:s"),"usu_pass"=>$_POST["Usuarios"]["usu_pass"],"usu_pass_repeat"=>$_POST["Usuarios"]["usu_pass_repeat"]);

$model->attributes=$param;

if($model->validate())

{

unset($param["usu_pass"]);


unset($param["usu_pass_repeat"]);


if($model->updateAll($param,"usu_id=:id",array(":id"=>$model->usu_id)))


$this->redirect(array('view','id'=>$model->usu_id));

}

Saludos

:)

Deberías crearte un Scope en el rules de tu modelo donde la contraseña no sea segura, así no la actualiza y simplemente con el model->attributes =$_POST[‘Usuarios’] lo tendrías