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 ?
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.