Código a ser executado duas vezes no pedido do Ajax

Na function de mail bloco if(!$validate) realmente é executado uma vez.

Estou me perguntando por que, na function de mail bloco if($validate) funciona duas vezes !!! ???

O problema aumenta apenas no pedido do Ajax e na primeira vez que a view page carregada. Depois disso, o bloco if($validate) é executado uma vez, nas outras solicitações if($validate) bloco if($validate) realmente for executado uma vez.

 public function actionCEmail() { $model = $this->loadModel(Yii::app()->user->id); $model->scenario = 'CEmail'; if(isset($_POST['User'])){ $model->attributes = $_POST['User']; $validate=$model->validate(); if(Yii::app()->request->isAjaxRequest){ if(!$validate) { $to='test@example.ds'; $subject='test'; $message='this is test'; mail($to,$subject,$message); Yii::app()->end(); } if($validate){ $to='test@example.ds'; $subject='test'; $message='this is test'; mail($to,$subject,$message); Yii::app()->end(); } } } if(Yii::app()->request->isAjaxRequest) $this->renderPartial('_cemail',array('model'=>$model),false,true); else $this->render('update',array('model'=>$model,'form'=>'_cemail')); } 

Se você precisar de alguma informação, diga-me, coloque.

Resolvido: A razão pela qual o bloco if($validate) foi executado duas vezes foi: uma vez quando validação Ajax e mais uma vez ao clicar em ajaxSubmitButton para enviar o formulário.

Existe uma maneira de distinguir esses dois uns dos outros? ajaxSubmitButton para entender quais vezes clicaram em ajaxSubmitButton ? ou outras coisas?

 if(Yii::app()->request->isAjaxRequest) { $error=CActiveForm::validate(array($model,$profile)); if($error!='[]') { $to='test@example.ds'; $subject='test'; $message='this is test'; mail($to,$subject,$message); Yii::app()->end(); }} if(isset($_POST['User'])){ $model->attributes = $_POST['User']; $validate=$model->validate(); if($validate){ $to='test@example.ds'; $subject='test'; $message='this is test'; mail($to,$subject,$message); Yii::app()->end(); }} 

Tente fazer algo assim.