Yii Framework Forum: Flash Message Depois Da Requisição Ajax - Yii Framework Forum

Jump to content

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

Flash Message Depois Da Requisição Ajax Rate Topic: -----

#1 User is offline   Rodrigoo 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 2
  • Joined: 25-September 13

Posted 26 September 2013 - 12:33 PM

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
0

#2 User is offline   Aryel Santos 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 8
  • Joined: 26-April 13

Posted 27 September 2013 - 02:54 PM

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

0

#3 User is offline   Rodrigoo 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 2
  • Joined: 25-September 13

Posted 30 September 2013 - 08:17 AM

Obrigado mano. Funfou legal

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