I'm currently using Yii2 framework. In the Login page,when I have a failed login, it just refreshes the view, but no errors displayed. Here's my current view:
<?php
use yii\helpers\Html;
use yii\bootstrap\ActiveForm;
/* @var $this yii\web\View */
/* @var $form yii\bootstrap\ActiveForm */
/* @var $model \common\models\LoginForm */
//$this->title = 'Welcome to my site';
//$this->params['breadcrumbs'][] = $this->title;
?>
<div class="site-login">
<h1><?= Html::encode($this->title) ?></h1>
<div class="row">
<div class="col-xs-12 col-sm-12 col-md-5 col-lg-4">
<div class="well no-padding">
<?php $form = ActiveForm::begin(["id"=>"login-form", "options"=>["class"=>"smart-form client-form"]]); ?>
<header>
Sign In
</header>
<fieldset>
<section>
<label class="label">User</label>
<label class="input"> <i class="icon-append fa fa-user"></i>
<input type="text" name="LoginForm[username]">
<b class="tooltip tooltip-top-right"><i class="fa fa-user txt-color-teal"></i> Escribe tu Usuario</b></label>
</section>
<section>
<label class="label">Contraseña</label>
<label class="input"> <i class="icon-append fa fa-lock"></i>
<input type="password" name="LoginForm[password]">
<b class="tooltip tooltip-top-right"><i class="fa fa-lock txt-color-teal"></i> Type your Password</b> </label>
<div class="note">
<a href="forgotpassword.html">Forgot your password?</a>
</div>
</section>
<section>
<label class="checkbox">
<input id="rememberMe" type="checkbox" name="LoginForm[rememberMe]">
<i></i>Remember Me
</label>
</section>
</fieldset>
<footer>
<button type="submit" class="btn btn-primary">
Entrar
</button>
</footer>
<?php $form = ActiveForm::end(); ?>
</div>
</div>
</div>
</div>
<script type="text/javascript">
$(function() {
$('#rememberMe').on('change', function( e ) {
e.stopPropagation();
this.value = this.checked ? 1 : 0;
});
})
</script>
In SiteController:
...
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->render('login', [
'model' => $model,
]);
}
}
...
No need of fancy stuff here, just something to alert users that are typing something wrong, user or password.
if u want flash message then try this. in controller
in view add this code along with your current code
This is exactly what your code does
If you want a different behavior just provide proper code. eg: is no data provided render the login page but if the login data are provided but incorrect render a warning page and after render the login page