2017-02-23 1 views
0

Ich folge diesem link, um ein Login-Modal zu erstellen. Jetzt Anmeldungs ​​Aktion istWie kann ich eine Fehlermeldung im Anmeldeformular modal anzeigen?

public function actionLogin() 
{ 
    if (!Yii::$app->user->isGuest) { 
     return $this->goHome(); 
    } 
    $model = new LoginForm(); 
    if ($model->load(Yii::$app->request->post()) && $model->login()) { 
     return $this->goBack(); 
    }else{ 
     return $this->renderAjax('login', [ 
       'model' => $model, 
     ]);   
    } 
} 

und in einer anderen Ansicht test.php, habe ich einen Knopf

echo Html::button('Create New Company', 
        ['value' => Url::to(['site/login']), 
        'title' => 'Creating New Company', 
        'class' => 'showModalButton btn btn-success' 
        ] 
       ); 

Auf diese Schaltfläche klicken, wird es zeigt das Anmeldeformular als modal und tut Clientseite Validierung für erforderlichen Attribute . Wenn der korrekte Benutzername und das richtige Passwort angegeben sind, wird der Benutzer ebenfalls erfolgreich angemeldet.

Mein Problem ist, wenn wir den falschen Berechtigungsnachweis der für Benutzername oder Passwort übergeben, wird es site/login in einer anderen Seite zu machen, die ungeschminkt und irrtümlichen Falschen Benutzername oder Passwort zeigt. Wie kann ich diesen Fehler bei Modal anzeigen?

+1

try ajax zu setzen Validierung 'enableAjaxValidation' => true, –

+0

Sind Sie usi? ng des ActiveForm-Widgets, um Ihr Login-Formular anzuzeigen? Dies zeigt Fehler für Ihr LoginForm-Modell. Ohne ActiveForm müssen Sie die Fehler manuell anzeigen ($ model-> getErrors()) – davey

+0

@vishva Ich setze 'enableAjaxValidation' => true, jetzt geht es nicht auf die unstyled Seite, aber das Problem ist, es zeigt nicht "inkorrekt" Benutzername oder Passwort "Fehler im Formular. Es zeigt die Fehlermeldung in cosole, wie kann ich diese Nachricht auf Formular bekommen – Shrikant

Antwort

1

Verwenden Ajax Validierung wie unter

In Form

'enableAjaxValidation' => true,

Im Controller-Aktion bei Temperaturen unter Code

if (Yii::$app->request->isAjax && $model->load($_POST)) 
{ 
    Yii::$app->response->format = 'json'; 
    return \yii\widgets\ActiveForm::validate($model); 
} 
+0

Es hat funktioniert, danke :) – Shrikant

Verwandte Themen