2017-04-12 4 views
0

Ich bekomme nur teilweise Daten in der Steuerung. hier ist die SituationYii2 Dynamisches Modell und Ajax fehlt Datenproblem

meine Aktion in-Controller, der die Ansicht mit der Form zeigen:

$model_sms = array(); 
      $model_sms = new \yii\base\DynamicModel(['sms_code', 'iduser', 'mail_status', 'signup_control']); 
      $model_sms->addRule(['sms_code, iduser, mail_status, signup_control'], 'required'); 
      $model_sms->addRule(['iduser, mail_status, signup_control'], 'integer'); 
      $model_sms->addRule('sms_code', 'string', ['min' => 5, 'max' => 5]); 
      $model_sms->iduser = $user->id; 
      $model_sms->mail_status = $mail_status; 
      $model_sms->signup_control = 1; 


      return $this->renderAjax('_sms_confirmation', ['model_sms' => $model_sms]); 

dann die Ansicht Code hier ist

<?php 
use yii\helpers\Html; 
use kartik\form\ActiveForm; 
?> 

<div class=" site-login"> 

    <?php $form = ActiveForm::begin(['id' => 'frmsmsconfirm', 'action'=>'/index.php?r=site/confirmsms']); ?> 
    <div class="row"> 
     <div class="col-md-1"> 
     </div>  
     <div class="col-md-10"> 
      <div class="formSeparator"><span>Enter SMS code</span></div> 
      <p class="logtxt">Please fill out the following fields to login:</p> 
      <?php 
           echo $form->field($model_sms, 'iduser')->hiddenInput()->label(false); 
           echo $form->field($model_sms, 'mail_status')->hiddenInput()->label(false); 
           echo $form->field($model_sms, 'signup_control')->hiddenInput()->label(false); 

       echo $form->field($model_sms, 'sms_code', [ 
        'feedbackIcon' => [ 
         'default' => 'phone', 
         'success' => 'ok', 
         'error' => 'exclamation-sign', 
         'defaultOptions' => ['class'=>'cw'] 
        ] 
       ])->textInput(['placeholder'=>'Enter SMS code', 'class'=>'newxinput xinput'])->label('SMS code'); 
      ?> 
     </div> 
     <div class="col-md-1"> 
     </div>  
    </div> 

    <div class="row"> 
     <div class="col-md-1"> 
     </div> 
     <div class="col-md-10"> 
      <div class="scforget"> 
        If you did not receive SMS <?= Html::a('send it again', ['site/smsresend']) ?>. 
      </div> 
     </div> 
     <div class="col-md-1"> 
     </div>  
    </div> 
    <div class="row"> 
     <div class="col-md-1"> 
     </div> 
     <div class="col-md-10"><br><br> 
      <div class="form-group"> 
       <?= Html::submitButton('Submit', ['class' => 'xsubbtn', 'name' => 'login-button']) ?> 
      </div><br><br> 
     </div> 
     <div class="col-md-1"> 
     </div>  
    </div> 
    <?php ActiveForm::end(); ?> 
</div> 

<script> 
$('#frmsmsconfirm').on('submit', function(e){ 
      e.preventDefault(); 
      e.stopImmediatePropagation(); 
      var form = $(this); 
      alert('ajax start'); 
      alert(form.serialize()); 

      $.ajax({ 
        url : form.attr('action'), 
        type : 'post', 
        data : form.serialize(), 
        success: function (response) 
        { 
         alert('radi a ne radi... hm'); 
         $('#sc_content').html(response); 

        }, 
        error: function() 
        { 
         console.log('internal server error'); 
        } 
       }); 
     }); 


      </script> 

ich alle richtigen Daten in Benachrichtigung erhalten (serialisiert. Form), aber wenn es zu einer anderen Aktion im Controller übergibt ich nur sms_code, andere 3 Felder kommen leer ... hier ist der Code bekommen ...

  $model_sms = array(); 

     $model_sms = new \yii\base\DynamicModel(['sms_code', 'iduser', 
     'mail_status', 'signup_control']); 
      $model_sms->addRule(['sms_code, iduser, mail_status, 
     signup_control'], 'required'); 
      $model_sms->addRule(['iduser, mail_status, signup_control'], 
     'integer'); 
      $model_sms->addRule('sms_code', 'string', ['min' => 5, 'max' => 
    5]); 
    $model_sms->load(Yii::$app->request->post()); 


     echo $model_sms->sms_code.'- xxx - <br>'; 
     echo $model_sms->iduser.'- xxx - <br>'; 
     echo $model_sms->mail_status.'- xxx - <br>'; 
     echo $model_sms->signup_control.'- xxx - <br>'; 

     exit; 

Hat anybod eine Idee? Dank

Antwort

0

Sie haben einen Fehler bei Ihrem 2 addrule() Definitionen:

$model_sms->addRule(['sms_code, iduser, mail_status, signup_control'], 'required'); 
$model_sms->addRule(['iduser, mail_status, signup_control'], 'integer'); 

sein sollte:

$model_sms->addRule(['sms_code', 'iduser', 'mail_status', 'signup_control'], 'required'); 
$model_sms->addRule(['iduser', 'mail_status', 'signup_control'], 'integer'); 

The 1st parameter of addRule should be an array of attributes.