2014-07-23 2 views
0

gii 생성 필드를 제출할 때마다 내 모델이 여러 번 저장되는 버그가 있습니다. 오류 로그를 작성하여 여러 번 호출되는 것을 볼 수 있으며 actionCreate 함수가 세 번 호출되는 코드의 일부라는 것을 알았습니다 (때로는 두 개). 클릭 제출 양식을 작성하면 오류 로그에 actionCreate 함수가 세 번 호출됨을 보여줍니다.actionCreate가 여러 번 호출되었습니다. - Yii

The controller form looks like this 

/** 
    * Creates a new model. 
    * If creation is successful, the browser will be redirected to the 'view' page. 
    */ 
    public function actionCreate() 
    { 
     $model=new Account; 
     error_log("How many times do I call actionCreate"); 
     // To-Do make the user account creation update via ajax 
     // $this->performAjaxValidation($model); 

     if(isset($_POST['Account'])) 
     { 
      $model->attributes=$_POST['Account']; 

      if($model->save()) 
      { 
       echo 'do we reach here'; 
       $this->redirect(array('index','id'=>$model->id)); 
      } 

     } 

     $this->render('create',array(
      'model'=>$model, 
     )); 
    } 

내 양식뿐만 아니라, 내가 대신 ajaxValidation의 ajaxValidation이 => 진정한 한 경우 오류가 내 양식에 있던이

<?php 
/* @var $this AccountController */ 
/* @var $model Account */ 
/* @var $form CActiveForm */ 
?> 

<div class="form"> 

<?php $form=$this->beginWidget('CActiveForm', array(
    'id'=>'account-form', 
    // Please note: When you enable ajax validation, make sure the corresponding 
    // controller action is handling ajax validation correctly. 
    // There is a call to performAjaxValidation() commented in generated controller code. 
    // See class documentation of CActiveForm for details on this. 
    'enableAjaxValidation'=>true, 
)); ?> 

    <p class="note">Fields with <span class="required">*</span> are required.</p> 

    <?php echo $form->errorSummary($model); ?> 

    <div class="row"> 
     <?php echo $form->labelEx($model,'name'); ?> 
     <?php echo $form->textField($model,'name',array('size'=>40,'maxlength'=>40)); ?> 
     <?php echo $form->error($model,'name'); ?> 
    </div> 

    <div class="row"> 
     <?php echo $form->labelEx($model,'mobile_comp'); ?> 
     <?php echo CHtml::dropDownList(CHtml::activeName($model,'mobile_comp'), $select, 
       $model->providerOptions, array('empty'=>'(Select Your Provider')); ?> 
     <?php echo $form->error($model,'mobile_comp'); ?> 
    </div> 

    <div class="row"> 
     <?php echo $form->labelEx($model,'msisdn'); ?> 
     <?php echo $form->textField($model,'msisdn'); ?> 
     <?php echo $form->error($model,'msisdn'); ?> 
    </div> 

    <div class="row"> 
     <?php echo $form->labelEx($model,'pin'); ?> 
     <?php echo $form->textField($model,'pin'); ?> 
     <?php echo $form->error($model,'pin'); ?> 
    </div> 

    <div class="row"> 
     <?php echo $form->labelEx($model,'company'); ?> 
     <?php echo $form->textField($model,'company',array('size'=>40,'maxlength'=>40)); ?> 
     <?php echo $form->error($model,'company'); ?> 
    </div> 

    <div class="row"> 
     <?php echo $form->labelEx($model,'balance'); ?> 
     <?php echo $form->textField($model,'balance',array('size'=>40,'maxlength'=>40)); ?> 
     <?php echo $form->error($model,'balance'); ?> 
    </div> 

    <div class="row buttons"> 
     <?php echo CHtml::submitButton($model->isNewRecord ? 'Create' : 'Save'); ?> 
    </div> 

<?php $this->endWidget(); ?> 

</div><!-- form --> 
+0

기능 $this->performAjaxValidation($model)의 추가하십시오 코드 우리는 "나는 새 필드를 만들 때마다"뜻 무엇인지 전혀 모른다. – Jon

+0

혼란을 설명해 주셔서 감사합니다. – Stephen

답변

1

=> 거짓 실수로 호출 된 함수 ActionCreate처럼 보인다 하나의 필드로 여러 번. 당신이 줄을 주석 한 Becuase

1

: $this->performAjaxValidation($model);가 아약스를 통해 요청이있을 경우 양식 데이터를 검증하고 JSON으로 검증 결과를 반환 앞서 응용 프로그램의 실행을 중지

// To-Do make the user account creation update via ajax 
// $this->performAjaxValidation($model); 

기능.

Ajax 유효성 검사가 발생하면 유효성 검사를 확인할 필요가 없으며 문제가 모델을 저장하고 있습니다.

그냥되지 않은 코멘트 $this->performAjaxValidation($model);

항목 :

관련 문제