Gostaria de saber se ja aconteceu com alguem um problema parecido com o meu:
Seguinte tem a avalidaçao do formulario via ajax, quando eu salvo o registro ele nao mostra a mensagem setada no SetFlash no index, mais quando eu desativo a validaçao via ajax ele mostra a mensagem.
Creio eu que esta tendo um conflito ou tem que ativar alguma coisa, sera que alguem pode me ajudar.
Tenho este codigo:
public function actionCreate()
	{
		$model=new Usuario;
		// Uncomment the following line if AJAX validation is needed
	         $this->performAjaxValidation($model);
		if(isset($_POST['Usuario']))
		{
			$model->attributes=$_POST['Usuario'];
			if($model->save()){
                                Yii::app()->user->setFlash('success','Usuário cadastrado com sucesso!');
				$this->redirect(array('index'));
                        }else{
                                Yii::app()->user->setFlash('error','Erro ao atualizar vefique os campos obrigatórios');
                        }
		}
		$this->render('create',array(
			'model'=>$model,
		));
	}
Valew desde já
         
        
           
         
            
       
      
        
        
          Alguem nunca teve este problema para poder me ajuda!
         
        
           
         
            
       
      
        
          
          
            Newerton  
          
              
                October 23, 2011,  7:18pm
               
              3 
           
         
        
          Posta seu create.php
Já tento comentar a linha:
$this->redirect(array('index'));
E ver se no create.php está indo o setFlash()?
No index que você está direcionando não tem em outro página o setFlash(‘success’), uma vez eu tinha problema com setFlash, que não enviav a sessão para a página correta não sei por que motivo.
         
        
           
         
            
       
      
        
        
          Entao Newerton,
Euu nao sei o que acontece, mais vou postar o que vc pediu:
Esta é o index onde deve aparecer a mensagem.
<div class="page-header-new">
       <h1>Usuários</h1>
</div>
<div id="statusMsg">
<?php if(Yii::app()->user->hasFlash("success")):?>
    <div class="alert-message block-message success">
        <img src="/images/ok.png" width="24" height="24" alt="ok"/>
        <?php echo Yii::app()->user->getFlash("success"); ?>
    </div>
<?php endif; ?>
 
<?php if(Yii::app()->user->hasFlash("error")):?>
    <div class="alert-message block-message error">
        <img src="/images/error.png" width="24" height="24" alt="ok"/>
        <?php echo Yii::app()->user->getFlash("error"); ?>
    </div>
<?php endif; ?><?php
        Yii::app()->clientScript->registerScript('myHideEffect','$("#statusMsg").delay(9000).animate({ height: "toggle", opacity: "toggle" }, "slow");',
        CClientScript::POS_READY
);
?>  
</div>
aqui o Create:
<div class="page-header-new">
       <h1>Novo Usuário</h1>
</div>
<div>  
   <?php echo $this->renderPartial('_form', array('model'=>$model)); ?></div>
form
<div class="form">
<?php $form=$this->beginWidget('CActiveForm', array(
	'id'=>'usuario-form',
	'enableAjaxValidation'=>false,
        'htmlOptions' =>array('class'=>'form-stacked'),
       
        
));
 ?>
    
     <h2>Os campo em *(em laranja) são obrigatórios</h2>
     <br />
   ....
</div><!-- form -->
Como eu disse se desativar o validaçao via ajax funciona e se tive nao funcione.
         
        
           
         
            
       
      
        
          
          
            Newerton  
          
              
                October 24, 2011,  4:25pm
               
              5 
           
         
        
          Faça um teste, comenta o $this->redirect().
E veja se está indo o setFlash() para o create.php
Coloca o hasFlash() no create.php
<?php if(Yii::app()->user->hasFlash("success")):?>
    <div class="alert-message block-message success">
        <img src="/images/ok.png" width="24" height="24" alt="ok"/>
        <?php echo Yii::app()->user->getFlash("success"); ?>
    </div>
<?php endif; ?>
 
<?php if(Yii::app()->user->hasFlash("error")):?>
    <div class="alert-message block-message error">
        <img src="/images/error.png" width="24" height="24" alt="ok"/>
        <?php echo Yii::app()->user->getFlash("error"); ?>
    </div>
<?php endif; ?>
Como relatei já, já tive problema com redirect também.
         
        
           
         
            
       
      
        
        
          
 Newerton:
 
Faça um teste, comenta o $this->redirect().
E veja se está indo o setFlash() para o create.php
Coloca o hasFlash() no create.php
<?php if(Yii::app()->user->hasFlash("success")):?>
    <div class="alert-message block-message success">
        <img src="/images/ok.png" width="24" height="24" alt="ok"/>
        <?php echo Yii::app()->user->getFlash("success"); ?>
    </div>
<?php endif; ?>
 
<?php if(Yii::app()->user->hasFlash("error")):?>
    <div class="alert-message block-message error">
        <img src="/images/error.png" width="24" height="24" alt="ok"/>
        <?php echo Yii::app()->user->getFlash("error"); ?>
    </div>
<?php endif; ?>
Como relatei já, já tive problema com redirect também.
 
 
Desta forma funciona.
Eu nao sei o que acontece deve ser o redirect mesmo…
Valew
         
        
           
         
            
       
      
        
          
          
            gusnips  
          
              
                October 24, 2011,  6:05pm
               
              7 
           
         
        
          setFlash guarda os dados por uma requisição apenas
quando ocorre a validação por ajax a requisição é feita, o flash não é usado e é apagado.
         
        
           
         
            
       
      
        
        
          
setFlash guarda os dados por uma requisição apenas
quando ocorre a validação por ajax a requisição é feita, o flash não é usado e é apagado.
 
 
Ham sim blz valew a explicação…é bom saber!!!
         
        
           
         
            
       
      
        
          
          
            Newerton  
          
              
                October 26, 2011, 10:40am
               
              9 
           
         
        
          
setFlash guarda os dados por uma requisição apenas
quando ocorre a validação por ajax a requisição é feita, o flash não é usado e é apagado.
 
 
Gustavo,
Posta uma solução para nós, eu mesmo com pouco tempo, não achei uma solução correta.
Já passei por isso já.
         
        
           
         
            
       
      
        
          
          
            gusnips  
          
              
                October 26, 2011,  6:47pm
               
              10 
           
         
        
          Opa
Eu não costumo usar validação ajax, mas dessa forma deve funcionar
na config do user sete autoUpdateFlash para false e use o getFlash normalmente, pois o 3º parametro de getFlash ‘delete’ é por padrão true, assim:
// config/main.php
components=>array(
'user'=>array(
 'autoUpdateFlash'=>false
),
),
// usando o flash
if(user()->hasFlash('teste')){
  echo user()->getFlash('teste');//o 3º parametro 'delete' é por padrão true
}
creio que isso resolve
         
        
           
         
            
       
      
        
          
          
            gusnips  
          
              
                October 26, 2011,  6:49pm
               
              11 
           
         
        
          Opa
Eu não costumo usar validação ajax, mas dessa forma deve funcionar
na config do user sete autoUpdateFlash para false e use o getFlash normalmente, pois o 3º parametro ‘delete’ é por padrão true, assim:
// config/main.php
components=>array(
'user'=>array(
 'autoUpdateFlash'=>false
),
),
// usando o flash
// user()=Yii::app()->user
if(user()->hasFlash('teste')){
  echo user()->getFlash('teste');//o 3º parametro 'delete' é por padrão true
}
creio que isso resolve
         
        
           
         
            
       
      
        
          
          
            djedy2005  
          
              
                October 27, 2011,  1:09pm
               
              12 
           
         
        
          
Opa
Eu não costumo usar validação ajax, mas dessa forma deve funcionar
na config do user sete autoUpdateFlash para false e use o getFlash normalmente, pois o 3º parametro ‘delete’ é por padrão true, assim:
// config/main.php
components=>array(
'user'=>array(
 'autoUpdateFlash'=>false
),
),
// usando o flash
// user()=Yii::app()->user
if(user()->hasFlash('teste')){
  echo user()->getFlash('teste');//o 3º parametro 'delete' é por padrão true
}
creio que isso resolve
 
 
Interessate vou testar depois…
Valew