php – 登录失败时没有错误消息Yii2

我目前正在使用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; ?>
点赞