2013-04-19 3 views
0

if(!$validate) 블록 mail 함수는 실제로 한 번 실행됩니다.코드가 Ajax 요청에서 두 번 실행됩니다.

내가 왜 궁금한데 if($validate) 블록 mail 함수가 두 번 실행됩니다 !!! ???

문제는 Ajax 요청에서만 발생하며 처음에는 view page이로드됩니다. 그 후 if($validate) 블록이 한 번 실행되고, 다른 요청에서는 if($validate) 블록이 실제로 한 번 실행됩니다.

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='[email protected]'; 
       $subject='test'; 
       $message='this is test'; 
       mail($to,$subject,$message); 
       Yii::app()->end(); 
      } 
      if($validate){ 
       $to='[email protected]'; 
       $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')); 
} 

정보가 필요하면 알려주세요.

+0

한 블록에서 한 번만 실행되지만 다른 블록에서는 두 번 실행됩니까? 두 블록 모두 똑같은 일을합니다. 둘 다 변경하여 특정 내용을 말하면 어떻습니까? '$ message = '이것은 $ validate'의 테스트입니다. 그래서 메일을 보낸 블럭을 확인할 수 있습니다. –

+0

** @ MarcB : ** 물론 나름대로의 시도도 있지만 결과는 동일합니다. – msoa

+0

** 깜짝 놀라게하는 !!!!!!!!!! ** 지난 밤에 나는 문제를 해결하기위한 노력 끝에 잠을 잤다. 이제 내가 깨어나서 스크립트를 다시 테스트 해 본다. 놀랍다. if ($ validate) 블록이 작동한다. 'if (! $ validate)'블록을 실행하기 전까지는 실제로 작동했습니다. 'if (! $ validate)'블록이 실행 된 후에'if ($ validate)'블록이 두 번 실행됩니다. !!!!!!!!!!!!! – msoa

답변

0

해결하십시오 if($validate) 블록이 두 번 수행 된 것을 이유 : 때 한 번 아약스 검증 및 다시 한 번 양식을 제출하기 위해 ajaxSubmitButton 클릭 할 때.

이 둘을 서로 구별 할 수있는 방법이 있습니까? 어떤 시간에 클릭했는지 이해하려면 주문하십시오 ajaxSubmitButton? 또는 다른 것들?

0
if(Yii::app()->request->isAjaxRequest) 
{ 
$error=CActiveForm::validate(array($model,$profile)); 
if($error!='[]') { 
$to='[email protected]'; 
       $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='[email protected]'; 
       $subject='test'; 
       $message='this is test'; 
       mail($to,$subject,$message); 
       Yii::app()->end(); 
      }} 

이런 식으로 만들어보세요.

관련 문제