我目前正在使用Yii2框架.
在“登录”页面中,当我登录失败时,它只刷新视图,但不显示错误.
这是我目前的观点:
<?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>
在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,
]);
}
}
...
这里不需要花哨的东西,只需提醒用户输入错误的内容,用户或密码.
最佳答案 如果你想要flash消息,那就试试吧.在控制器中
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 {
Yii::$app->session->setFlash('failure', "incorrect username or password");
return $this->render('login', [
'model' => $model,
]);
}
}
在视图中添加此代码以及当前代码
<?php if (Yii::$app->session->hasFlash('failure')): ?>
<div class="alert alert-danger alert-dismissable">
<button aria-hidden="true" data-dismiss="alert" class="close" type="button">×</button>
<h4><i class="icon fa fa-times"></i> Error!</h4>
<?= Yii::$app->session->getFlash('failure') ?>
</div>
<?php endif; ?>