YII2框架自带的后台登录界面比较丑,今天就教教大家如何把后台登录界面换成我们想要的样式。
1、后台登录布局
新建一个登录布局文件login.php,然后把后台自带的布局文件(backend/views/layouts/main.php)中的代码内容全部复制到新建的布局文件login.php中,然后把一些不需要用到的内容删掉,修改后的布局文件代码如下:
<?php /* @var $this \yii\web\View */ /* @var $content string */ use yii\helpers\Html; use yii\bootstrap\Nav; use yii\bootstrap\NavBar; use yii\widgets\Breadcrumbs; use common\widgets\Alert; use backend\assets\LoginAsset; //LoginAsset 在后面的步骤中会创建 LoginAsset::register($this); ?> <?php $this->beginPage() ?> <!DOCTYPE html> <html lang="<?= Yii::$app->language ?>"> <head> <meta charset="<?= Yii::$app->charset ?>"> <meta name="viewport" content="width=device-width, initial-scale=1"> <?= Html::csrfMetaTags() ?> <title><?= Html::encode($this->title) ?></title> <?php $this->head() ?> </head> <body class="signwrapper"> <?php $this->beginBody() ?> <?= $content ?> <?php $this->endBody() ?> </body> </html> <?php $this->endPage() ?>

2、在后台登录控制器中重新定义登录布局文件
由于原先的登录布局文件不用了改用上面新的布局文件,因此需要在控制器中重新定义。
/**
* 后台登录控制器
* Login action.
* @return string
*/
public function actionLogin()
{
$this->layout = 'login.php';
if (!Yii::$app->user->isGuest) {
return $this->goHome();
}
$model = new LoginForm();
if ($model->load(Yii::$app->request->post()) && $model->login()) {
return $this->goBack();
} else {
$model->password = '';
return $this->render('login', [
'model' => $model,
]);
}
}
3、引入后台布局文件样式
由于后台登录界面后后台其他页面不样式布局一样,因此单独给他配置样式。
统计静态资源管理
在backend/web/下新建一个statics文件夹把下面提供的资源包中statics中的所有文件都放到前面新建的statics文件夹下,或者直接把下载资源包里的statics文件夹放到backend/web/下面。
样式资源包
链接:https://pan.baidu.com/s/1kGkVOzT7Nde51tzfLoqw1w
提取码:7fwf
把backend/web/css/site.css 样式文件放到 backend/web/statics/css/下,然后删掉backend/web/下的css文件夹。

修改静态资源配置文件

在backend/assets中新建后台登录界面配置文件LoginAsset.php,文件内容如下:
<?php
namespace backend\assets;
use yii\web\AssetBundle;
/**
* Main backend application asset bundle.
*/
class LoginAsset extends AssetBundle
{
public $basePath = '@webroot';
public $baseUrl = '@web';
public $css = [
'statics/css/font-awesome/css/font-awesome.min.css',
'statics/css/layout.css',
];
public $js = [
];
public $depends = [
'yii\web\YiiAsset',
'yii\bootstrap\BootstrapAsset',
];
}
4、后台路由优化
把backend/config/main.php文件中 urlManager的注释去掉
把frontend/web/.htaccess文件复制一份到backend/web 下(伪静态化配置)

5、登录界面调整优化
backend/views/site/login.php优化调整后的代码
<?php
/* @var $this yii\web\View */
/* @var $form yii\bootstrap\ActiveForm */
/* @var $model \common\models\LoginForm */
use yii\helpers\Html;
use yii\bootstrap\ActiveForm;
$this->title = '登录';
$this->params['breadcrumbs'][] = $this->title;
?>
<div class="sign-overlay"></div>
<div class="signpanel"></div>
<div class="panel signin">
<div class="panel-heading">
<h4 class="panel-title">欢迎登陆博客系统</h4>
</div>
<div class="panel-body">
<button class="btn btn-primary btn-quirk btn-fb btn-block">联系我们</button>
<div class="or">or</div>
<?php $form = ActiveForm::begin(['id' => 'login-form']); ?>
<?= $form->field($model, 'username',[
'inputOptions'=>[
'placeholder'=>'请输入登录账号',
],
'inputTemplate'=>'<div class="input-group">
<span class="input-group-addon"><i class="fa fa-user"></i></span>{input}
</div>',
])->textInput(['autofocus' => true])->label(false) ?>
<?= $form->field($model, 'password',[
'inputOptions'=>[
'placeholder'=>'请输入登录密码',
],
'inputTemplate'=>
'<div class="input-group">
<span class="input-group-addon"><i class="fa fa-lock"></i></span>{input}
</div>',
])->passwordInput()->label(false) ?>
<div><a href="#" class="forgot">忘记密码</a></div>
<div class="form-group">
<?= Html::submitButton('登录', ['class' => 'btn btn-primary btn-success btn-block', 'name' => 'login-button']) ?>
</div>
<?php ActiveForm::end(); ?>
<hr class="invisible">
<div class="form-group">
<a href="#" class="btn btn-default btn-quirk btn-stroke btr-stroke-thin btn-block"></a>
</div>
</div>
</div><!-- panel -->
修改后的后台登录界面效果图

