0

if(!$validate)ブロック関数では、mail実際に 1 回実行されます。

なぜif($validate)ブロックmail関数で2回実行されるのだろうか!!!???

この問題は、Ajaxリクエスト時と最初のview pageロード時にのみ発生します。その後、if($validate)ブロックは 1 回実行され、他の要求ではif($validate)ブロックが実際に 1 回実行されます。

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'));
}

情報が必要な場合は、それを入れてください。

4

2 に答える 2

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();
            }}

このようなものを作ってみてください。

于 2013-04-22T11:25:06.003 に答える