Flash Message Depois Da Requisição Ajax

Olá pessoal, estou tendo um probleminha com uma requisição ajax. É o seguinte tenho a tela de login com duas divs, uma com o formulário de login e a outra div com o formulário para redefinir senha, esse formulário para redefinir senha possui 2 campos, um com Nome de Usuário e o outro com CPF, a validação desses dois campos acontecem via AJAX.

No Controller, a action que realiza essa validação tem um probleminha, caso o valor informado seja inválido, seto uma flashMessage informando que o nome de usuário ou cpf são inválidos, mas quando retorna pra tela de login não consigo mostrar essa mensagem de erro.

Se alguém já tiver passado por isso, peço que me ajudem.

Desde já agradeço a todos.

segue abaixo o código:

model


class ValidaForm extends CFormModel

{

    public $usuario_login;

    public $usuario_cpf;

    

    public function attributeLabels() {

        return array(

            'usuario_login'=>'Nome de Usuário',

            'usuario_cpf'=>'CPF',

        );

    }

    

    public function rules() {

        return array(

            arraY('usuario_login, usuario_cpf', 'required', 'message'=>'O campo {attribute} é obrigatório!'),

            array('usuario_cpf', 'length', 'min'=>11),

        );

    }

}



view


<div class="wrapper">

    <!-- Box de Login -->

    <div id="areaLogin">  

        <div id="areaAlertaLogin">

            <?php

            $flashMessages = Yii::app()->user->getFlashes();

            if ($flashMessages):

                foreach ($flashMessages as $key => $message):

                    ?>           

                    <div id="mensagemAlerta" class="alert alert-<?php echo $key; ?>">

                        <button type="button" class="close" data-dismiss="alert">&times;</button>

                        <i class="icon-warning-sign"></i>

                        <h4>Nome do Erro</h4>

                        <?php echo $message; ?>

                    </div>

                    <?php

                endforeach;

            endif;

            ?>

        </div>

        <!-- Área Logo -->

        <div class="pull-left logo">      

            <img  src="<?php echo Yii::app()->theme->baseUrl; ?>/img/gpli_logo.png" width="120" height="141" />

        </div>


        <!-- Formulário de Login -->

        <div class="pull-right formLogin">

            <form id="form_login" action="<?php echo Yii::app()->baseUrl; ?>/acesso/login" method="post">

                <div class="row-fluid">

                    <div class="span12">

                        <!-- Campo Nome de Usuário -->

                        <label>Nome de Usuário :</label>

                        <input type="text" placeholder="Usuário" name="LoginForm[username]" id="login">               

                    </div>

                </div>

                <div class="row-fluid">

                    <div class="span12">

                        <!-- Campo Senha -->

                        <label>Senha :</label>

                        <input type="password" placeholder="Senha" name="LoginForm[password]" id="senha">            

                    </div>

                </div>

                <div class="row-fluid">          

                    <!-- Botões da Área de Login -->

                    <div class="span6">

                        <a id="btn_esqueceu_senha" href="#">Esqueceu sua Senha?</a>

                    </div>

                    <div class="span6">            

                        <button class="btnBlue" type="submit">Acessar</button>

                    </div>

                </div>

            </form>

        </div>

        <!-- Área de REVALIDAR E TROCAR SENHA -->

        <div id="valida_usuario" class="areaValidaTroca">

            <div class="titleValidaTroca">

                <i class="icon-user"></i> Validar Usuário

            </div>

            <div class="formValidaTroca">

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

                    'id'=>'form_valida',

                    'enableAjaxValidation'=>false,

                    'enableClientValidation'=>true,

                    'clientOptions'=>array(

                        'validateOnSubmit'=>true,

                    ),

                ));

                ?>

                <div class="row-fluid">

                    <div class="span12">

                        <?php echo $form->labelEx($modelValida, 'usuario_login'); ?>

                        <?php echo $form->textField($modelValida, 'usuario_login', array('placeholder'=>'Entre com seu Login')); ?>

                        <?php echo $form->error($modelValida, 'usuario_login'); ?>

                    </div>

                </div>               

                <div class="row-fluid">

                    <div class="span12">

                        <?php echo $form->labelEx($modelValida, 'usuario_cpf'); ?>

                        <?php echo $form->textField($modelValida, 'usuario_cpf', array('placeholder'=>'Entre com seu CPF')); ?>

                        <?php echo $form->error($modelValida, 'usuario_cpf'); ?>

                    </div>

                </div>

                <div class="row-fluid">          

                    <div class="span12">

                        <?php echo CHtml::button('Validar', array('class'=>'btnBlue', 'onclick'=>'validaUsuario()', 'id'=>'btn_valida_usuario')); ?>

                    </div> 

                </div>

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

            </div>

        </div>

    </div>

</div>


<script>

    function validaUsuario() {

        $.ajax({

            'url': '/gpli/acesso/ajaxValidar',

            'data': $('#form_valida').serialize(),

            'type': 'post',

            'dataType': 'json',

            'success': function(data) {

                alert(data.status);

                if (data.status === 'failure') {

                    alert(data.resultado);

                    $("#ValidaForm_usuario_login").val('');

                    $("#ValidaForm_usuario_cpf").val('');

                    $("#ValidaForm_usuario_login").focus();

                } else if (data.status === 'success') {

                    $("#valida_usuario").html(data.resultado);

                    $("#AlteraForm_nova_senha").focus();

                    $("#AlteraForm_usuario_id").val(data.id);

                }

            },

            'cache': false,

        });

        return false;

    }


    function alteraSenha() {

        $.ajax({

            'url': '/gpli/acesso/ajaxAlterar',

            'data': $('#form_altera').serialize(),

            'type': 'post',

            'dataType': 'json',

            'success': function(data) {

                if (data.status === 'failure') {

                    alert(data.resultado);

                    $("#new_pswd").val('');

                    $("#confirm_pswd").val('');

                    $("#new_pswd").focus();

                } else {

                    alert(data.resultado);

                    $("#login").focus();

                    $("#valida_usuario").slideToggle(500);

                }

            },

            'cache': false,

        });

        return false;

    }

</script>

controller


    public function actionAjaxValidar() {

        $modelValida = new ValidaForm();

        

        // If it is ajax validation

        if(isset($_POST['ajax']) && $_POST['ajax']==='form_valida')

        {

            echo CActiveForm::validate($modelValida);

            Yii::app()->end();

        }

        

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

        {

            if (Yii::app()->request->isAjaxRequest)

            {

                $modelValida->attributes = $_POST['ValidaForm'];

                if (strlen(trim($modelValida->usuario_login)) > 0 && strlen(trim($modelValida->usuario_cpf)) > 0)

                {

                    $usuario = Usuario::model()->find('usua_login=\''.$modelValida->usuario_login.'\'');

                    if ($usuario !== null && $usuario->Funcionario->func_cpf === $this->removePontosDoCPF($modelValida->usuario_cpf))

                    {

                        $modelAltera = new AlteraForm();

                        echo CJSON::encode(array(

                            'status'=>'success',

                            'id'=>$usuario->usua_id,

                            'resultado'=>$this->renderPartial('_altera_senha', array('modelAltera'=>$modelAltera), true),

                        ));

                        exit;

                    } else

                    {

                        Yii::app()->user->setFlash('error', 'Nome de usuário ou CPF inválidos.');

                        echo CJSON::encode(array(

                            'status'=>'failure',

                            'resultado'=>'Nome de usuário ou CPF inválidos.',

                        ));

                        exit;

                    }

                } else

                {

                    Yii::app()->user->setFlash('error', 'Por favor preencha todos os campos.');

                    echo CJSON::encode(array(

                        'status'=>'failure',

                        'resultado'=>'Por favor preencha todos os campos.'

                    ));

                    exit;

                }

            }

        }

     }



At. Rodrigoo

Controller:


if (Yii::app()->request->isAjaxRequest)

            {

                $modelValida->attributes = $_POST['ValidaForm'];

                if (strlen(trim($modelValida->usuario_login)) > 0 && strlen(trim($modelValida->usuario_cpf)) > 0)

                {

                    $usuario = Usuario::model()->find('usua_login=\''.$modelValida->usuario_login.'\'');

                    if ($usuario !== null && $usuario->Funcionario->func_cpf === $this->removePontosDoCPF($modelValida->usuario_cpf))

                    {

                        $modelAltera = new AlteraForm();

                        echo CJSON::encode(array(

                            'status'=>'success',

                            'id'=>$usuario->usua_id,

                            'resultado'=>$this->renderPartial('_altera_senha', array('modelAltera'=>$modelAltera), true),

                        ));

                        exit;

                    } else

                    {

                        echo CJSON::encode(array(

                            'status'=>'failure',

                            'resultado'=>'<div class="flash-error">Nome de usuário ou CPF inválidos.</div>',

                        ));

                        exit;

                    }

                } else

                {                    

                    echo CJSON::encode(array(

                        'status'=>'failure',

                        'resultado'=>'<div class="flash-error">Por favor preencha todos os campos.</div>'

                    ));

                    exit;

                }

            }

Coloque uma div com id qualquer em sua view:


<div id="idQualquer"></div>

No seu JavaScript:


<script>

    function validaUsuario() {

        $.ajax({

            'url': '/gpli/acesso/ajaxValidar',

            'data': $('#form_valida').serialize(),

            'type': 'post',

            'dataType': 'json',

            'success': function(data) {

                alert(data.status);

                if (data.status === 'failure') {

                    alert(data.resultado);

                    $("#ValidaForm_usuario_login").val('');

                    $("#ValidaForm_usuario_cpf").val('');

                    $("#ValidaForm_usuario_login").focus();

                    $("#idQualquer").html(data.resultado);


                } else if (data.status === 'success') {

                    $("#valida_usuario").html(data.resultado);

                    $("#AlteraForm_nova_senha").focus();

                    $("#AlteraForm_usuario_id").val(data.id);

                }

            },

            'cache': false,

        });

        return false;

    }

Obrigado mano. Funfou legal

:D