Yii Framework Forum: Ajax Validation + Warning Message - Yii Framework Forum

Jump to content

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

Ajax Validation + Warning Message Exibir um aviso ao invés de erro depois do AjaxValidation Rate Topic: -----

#1 User is offline   Gustavo Gonçalves 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 40
  • Joined: 02-October 12
  • Location:Belo Horizonte, MG - Brasil

Posted 26 January 2013 - 09:46 AM

Pessoal,

Gostaria de exibir uma mensagem apenas de aviso, após uma validação ajax do Form.

Habilitei o AjaxValidation do Form e criei uma regra no Rules do meu Model, que executa o código abaixo:
	    if (!empty($this->referencia) && ($attribute_name=='referencia')) {
			$criteria = new CDbCriteria;
			$criteria->compare('referencia',$this->referencia,true);
			$outroproduto = Produtos::model()->find($criteria);
			if (! $outroproduto==null) {
				$this->addError($attribute_name, Yii::t('referencia', 'Esta referência já existe'));
				return false;
			}
	    }


Com o addError está funcionando, mas não posso utilizá-lo.

Tentei o Yii::app()->user->setFlash() ... mas ele não aparece no Form quando mudo o valor do campo (com o adderro funciona), apenas quando faço o Submit. No momento do Submit já é tarde demais, pois o aí os dados serão gravados.

Existe alguma outra forma de avisar o usuário de possível problemas no cadastro ?

Muito obrigado !
0

#2 User is offline   Newerton 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 807
  • Joined: 27-April 10
  • Location:Campo Grande/MS - Cambé/PR, Brasil

Posted 29 January 2013 - 02:36 PM

Gustavo,

Você pode usar validação inline nos formulários.

Vou postar duas funções que pode ser usada antes de submeter e depois de submeter o formulário.

$form = $this->beginWidget('bootstrap.widgets.CActiveForm', array(
    'id' => 'index-form',
    'enableAjaxValidation' => true,
    'clientOptions' => array('validateOnSubmit' => true, 'validateOnChange' => true,
		'beforeValidate' => 'js:function(form) {
			if($('#Model_titulo').val() == ''){
				alert('Preencha o campo antes de submeter o formulário');
				return false;
			}
			 return true;
		}',
        'afterValidate' => 'js:function(form, data, hasError){
                    if(hasError){
                        alert('Erro no formulário');
						return false;
                    }
                    
                    return true;
                }'
    ),    
));


No beforeValidate() você pode usar uma validação em $.ajax(), se retorna true, você valida o formulário, se retorna false, manda um alerta, mostra uma mensagem no formulário.
Newerton Vargas de Araújo
0

#3 User is offline   Adrian Lucas 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 224
  • Joined: 13-October 11
  • Location:João Pessoa - Paraíba

Posted 30 January 2013 - 12:58 PM

View PostNewerton, on 29 January 2013 - 02:36 PM, said:

Gustavo,

Você pode usar validação inline nos formulários.

Vou postar duas funções que pode ser usada antes de submeter e depois de submeter o formulário.

$form = $this->beginWidget('bootstrap.widgets.CActiveForm', array(
    'id' => 'index-form',
    'enableAjaxValidation' => true,
    'clientOptions' => array('validateOnSubmit' => true, 'validateOnChange' => true,
		'beforeValidate' => 'js:function(form) {
			if($('#Model_titulo').val() == ''){
				alert('Preencha o campo antes de submeter o formulário');
				return false;
			}
		     return true;
		}',
        'afterValidate' => 'js:function(form, data, hasError){
                    if(hasError){
                        alert('Erro no formulário');
						return false;
                    }
                    
                    return true;
                }'
    ),    
));


No beforeValidate() você pode usar uma validação em $.ajax(), se retorna true, você valida o formulário, se retorna false, manda um alerta, mostra uma mensagem no formulário.


Newerton interessante esse seu ponto, como ficaria no beforeValidate() ?
Adrian Lucas
A fé em Deus nos faz crer no incrível,
ver o invisível e realizar o impossível.

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