Ajax Validation + Warning Message

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 !

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() ?