2016-04-13 9 views
1

ich modale Fenster in meiner Hauptansicht habeAjax Validierungsdaten in modalen Fenstern yii2

<?php 
     Modal::begin([ 
      'header' => 'Log in or register or restore password', 
      'id' => 'modal', 
      'size' => 'modal-lg', 
     ]); 
     echo "<div id='modalContent'></div>"; 
     Modal::end(); 
    ?> 

Und ich habe weitere Ansicht es in meinem modalen Fenster in Hauptansicht zu machen

<div class="row"> 
    <div class="col-lg-5"> 
     <?php $form = ActiveForm::begin(['id' => 'login-form']); ?> 

      <?= $form->field($login_model, 'username')->textInput() ?> 

      <?= $form->field($login_model, 'password')->passwordInput() ?> 

      <div class="form-group"> 
       <?= Html::submitButton('Login', ['class' => 'btn btn-primary', 'name' => 'login-button', 'data-pjax' => 1]) ?> 
      </div> 

     <?php ActiveForm::end(); ?> 
    </div> 
</div> 

diese

Verwendung
\frontend\assets\OverviewAsset::register($this); 

ich registriert mein js Code

$(document).ready(function() { 
$(function() { 
    var id_user_tag = 'id_user'; 

    $(document).on('click','[' + id_user_tag + ']', function() { 
     var id_user = this.getAttribute(id_user_tag); 
     $.ajax({ 
      url: '/client/is-full-page-accessed', 
      type: 'post', 
      data: { 
       id_user: id_user 
      }, 
      success: function (response) { 
       if(response) { 
        window.location = 'full-page?id_user=' + id_user; 
       } else { 
        $.get(
         '/client/log-in', 
         function (data) { 
          $('#modal').modal('show') 
           .find('#modalContent') 
           .html(data); 
         } 
        ); 
       } 
      } 
     }); 
    }); 
});}); 

Und ich habe Controller

public function actionLogIn() 
{ 
    if (!\Yii::$app->user->isGuest) { 
     return $this->goHome(); 
    } 

    $password_reset_request_model = new PasswordResetRequestForm(); 
    if ($password_reset_request_model->load(Yii::$app->request->post()) && $password_reset_request_model->validate()) { 
     if ($password_reset_request_model->sendEmail()) { 
      Yii::$app->session->setFlash('success', 'Check your email for further instructions.'); 

      return $this->goHome(); 
     } else { 
      Yii::$app->session->setFlash('error', 'Sorry, we are unable to reset password for email provided.'); 
     } 
    } 

    $login_model = new LoginForm(); 
    if ($login_model->load(Yii::$app->request->post()) && $login_model->login()) { 
     return $this->goBack(); 
    } else { 
     $model['login'] = $login_model; 
     return $this->renderAjax('log-in', ['login_model' => $login_model, 'password_reset_request_model' => $password_reset_request_model]); 
    } 
} 

So endlich, was ich habe

ich auf einige Schaltfläche klicken und wenn ich nicht angemeldet bin - ich habe meine modale Fenster öffnen und erhalten den zusätzlichen Sehen Sie, dass ich im Controller gerendert habe. Es funktioniert, aber wenn ich falsche Daten im modalen Fenster eingebe - meine Seite geht an diese URL. Aber ich möchte meine ungültigen Daten im modalen Fenster anzeigen.

Wie geht das?

Lassen Sie mich wissen, wenn weitere Informationen benötigt werden.

Antwort

2

Entschuldigung nochmal. Mein Fehler. Ich muss nur mein Formular abdecken in

<?php yii\widgets\Pjax::begin(['id' => 'log-in']) ?> 
<?php $form = ActiveForm::begin(['id' => 'login-form', 'options' => ['data-pjax' => true]]); ?> 
<?php yii\widgets\Pjax::end() ?> 

Und das ist alles Änderungen, die ich getan habe. Dokumentation, Dokumentation und noch einmal Dokumentation!

+0

Danke, ich war auf der Suche nach dieser Lösung. –

Verwandte Themen