在if(!$validate)
区块中mail
功能真正运行一次。
我想知道为什么在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='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'));
}
如果您需要任何信息,请告诉我。
答案 0 :(得分:0)
已解决:if($validate)
块执行两次的原因是:一次时进行Ajax验证,再次时点击ajaxSubmitButton
用于提交表单。
有没有办法区分这两者?为了理解什么时候点击ajaxSubmitButton
?或其他事情?
答案 1 :(得分:0)
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();
}}
尝试制作类似的东西。