一、[可跳过]开发环境与工具介绍
composer 下载TP5.0
composer create-project topthink/think=5.0.* tp5 --prefer-dist
后台使用X-admin v1.0 版本 官网下载:http://x.xuebingsi.com/index/down/index.html
二、入口文件与后台模块自动绑定
使用TP5的命令行:创建admin 模块
php think build --module Admin
在入口文件public下复制index.php
修改名称维admin.php
同时修改application下的配置文件config中
// 入口自动绑定模块
'auto_bind_module' => true,
//默认是false 修改为true
复制config.php文件到admin模块文件夹中
修改为:
<?php
//后台配置文件
return [
'view_replace_str' => [
//重置_STATIC__常量
'__STATIC__' => '/static/admin',
],
];
备注:
TP5隐藏index.php
可以去掉URL地址里面的入口文件 index.php ,但是需要额外配置WEB服务器的重写规则。
以 Apache 为例,需要在入口文件的同级添加 .htaccess 文件(官方默认自带了该文件),内容如下:
<IfModule mod_rewrite.c>
Options +FollowSymlinks -Multiviews
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
</IfModule>
如果用的 phpstudy ,规则如下:
<IfModule mod_rewrite.c>
Options +FollowSymlinks -Multiviews
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [L,E=PATH_INFO:$1]
</IfModule>
接下来就可以使用下面的URL地址访问了
http://tp5.com/index/index/index
http://tp5.com/index/index/hello
如果你使用的 apache 版本使用上面的方式无法正常隐藏 index.php ,可以尝试使用下面的方式配置
.htaccess 文件:
<IfModule mod_rewrite.c>
Options +FollowSymlinks -Multiviews
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?/$1 [QSA,PT,L]
</IfModule>
如果是 Nginx 环境的话,可以在 Nginx.conf 中添加:
location/ {// …..省略部分代码
if(!-e $request_filename){
rewrite ^(.*)$ /index.php?s=/$1 last;
break;
}
}
三、后台模板导入与公共文件分离
将需要的后台模板对应的控制器进行创建
这里我们还是使用TP5命令行
php think make:controller admin/Admin
php think make:controller admin/Index
php think make:controller admin/Artcile
php think make:controller admin/Category
php think make:controller admin/Banner
php think make:controller admin/Login
php think make:controller admin/System
在admin模块下创建公共控制器文件夹common并创建基础控制器Base.php
<?php
namespace app\admin\common;
use think\Controller;
class Base extends Controller
{
}
所有创建的后台控制器继承基础控制Base
演示Index控制器
<?php
namespace app\admin\controller;
use app\admin\common\Base;
class Index extends Base
{
public function index()
{
//渲染后台首页视图
return $this->fetch('index');
}
public function welcome()
{
//渲染后台首页视图
return $this->fetch('welcome');
}
}
在admin模块中view文件夹下创建对应的视图文件夹同时对视图进行公共部分分离在view文件夹下创建公共文件夹public如下图
演示index.html
<!DOCTYPE html>
<html>
{include file='public/header' /} <!--公共头部-->
<body>
<div class="layui-layout layui-layout-admin">
<div class="layui-header header header-demo">
<div class="layui-main">
<a class="logo" href="__STATIC__/index.html">
X-admin v1.0
</a>
<ul class="layui-nav" lay-filter="">
<li class="layui-nav-item"><img src="__STATIC__/images/logo.png" class="layui-circle" style="border: 2px solid #A9B7B7;" width="35px" alt=""></li>
<li class="layui-nav-item">
<a href="javascript:;">admin</a>
<dl class="layui-nav-child"> <!-- 二级菜单 -->
<dd><a href="">个人信息</a></dd>
<dd><a href="">切换帐号</a></dd>
<dd><a href="{:url('login/logout')}">退出</a></dd>
</dl>
</li>
<li class="layui-nav-item x-index"><a href="/">前台首页</a></li>
</ul>
</div>
</div>
{include file='public/left_menu' /} <!--公共菜单-->
<div class="layui-tab layui-tab-card site-demo-title x-main" lay-filter="x-tab" lay-allowclose="true">
<div class="x-slide_left"></div>
<ul class="layui-tab-title">
<li class="layui-this">
我的桌面
<i class="layui-icon layui-unselect layui-tab-close">ဆ</i>
</li>
</ul>
<div class="layui-tab-content site-demo site-demo-body">
<div class="layui-tab-item layui-show">
<iframe frameborder="0" src="{:url('index/welcome')}" class="x-iframe"></iframe>
</div>
</div>
</div>
<div class="site-mobile-shade">
</div>
</div>
{include file="public/base_js" /}<!--公共js文件-->
</body>
</html>
四、制作后台各菜单项首页展示
去除不需的菜单,留下本项目需要的几项基础功能菜单
如下图: