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'));
}
정보가 필요하면 알려주세요.
한 블록에서 한 번만 실행되지만 다른 블록에서는 두 번 실행됩니까? 두 블록 모두 똑같은 일을합니다. 둘 다 변경하여 특정 내용을 말하면 어떻습니까? '$ message = '이것은 $ validate'의 테스트입니다. 그래서 메일을 보낸 블럭을 확인할 수 있습니다. –
** @ MarcB : ** 물론 나름대로의 시도도 있지만 결과는 동일합니다. – msoa
** 깜짝 놀라게하는 !!!!!!!!!! ** 지난 밤에 나는 문제를 해결하기위한 노력 끝에 잠을 잤다. 이제 내가 깨어나서 스크립트를 다시 테스트 해 본다. 놀랍다. if ($ validate) 블록이 작동한다. 'if (! $ validate)'블록을 실행하기 전까지는 실제로 작동했습니다. 'if (! $ validate)'블록이 실행 된 후에'if ($ validate)'블록이 두 번 실행됩니다. !!!!!!!!!!!!! – msoa