🚀 快速开始

欢迎使用 ThinkAdmin!本指南将帮助您在 5 分钟内快速搭建一个功能完整的后台管理系统。

🚀 快速体验

系统特点

  • 快速搭建: 5 分钟内完成系统搭建
  • 功能完整: 提供完整的后台管理功能
  • 易于使用: 简单易用的操作界面
  • 高度可定制: 支持灵活的定制和扩展

适用场景

  • 快速原型: 快速搭建项目原型
  • 学习研究: 学习后台管理系统开发
  • 商业项目: 用于商业项目开发
  • 个人项目: 个人项目和小型应用

演示效果

  • 在线演示: https://v6.thinkadmin.top
  • 后台管理: 完整的后台管理界面
  • 功能演示: 权限管理、文件管理、数据操作
  • 响应式设计: 支持多设备访问

⚙️ 环境要求

系统要求

  • PHP 版本: PHP 7.1 或更高版本
  • Composer: 需要安装 Composer
  • 数据库: 支持 MySQL、PostgreSQL、SQLite
  • Web 服务器: Apache、Nginx 或内置服务器

推荐环境

  • PHP 版本: PHP 8.0 或更高版本
  • 内存: 至少 512MB 内存
  • 磁盘空间: 至少 100MB 可用空间
  • 网络: 稳定的网络连接

🚀 一键安装

1. 创建项目

# 创建项目(需要在英文目录下执行)
composer create-project zoujingli/thinkadmin my-project

# 进入项目目录
cd my-project

2. 初始化数据库

# 数据库初始化(默认使用 Sqlite)
php think migrate:run

3. 启动服务

# 启动内置服务器
php think run --host 127.0.0.1 --port 8000

4. 访问系统

打开浏览器访问:http://127.0.0.1:8000

  • 后台管理: http://127.0.0.1:8000/admin
  • 默认账号: admin
  • 默认密码: admin

📋 基础配置

1. 系统参数配置

登录后台后,进入 系统管理系统参数配置,配置以下参数:

  • 网站名称: 设置您的网站名称
  • 文件上传: 配置文件上传参数
  • 邮件配置: 配置邮件发送参数(可选)

2. 用户管理

进入 系统管理用户管理

  • 修改默认管理员密码
  • 创建新的管理员账号
  • 配置用户权限

3. 菜单管理

进入 系统管理菜单管理

  • 查看系统菜单结构
  • 添加自定义菜单
  • 配置菜单权限

🔧 开发指南

1. 创建用户管理模块

让我们创建一个完整的用户管理模块作为示例:

创建控制器

<?php
namespace app\admin\controller;

use think\admin\Controller;
use think\admin\model\SystemUser;

class UserController extends Controller
{
    /**
     * 用户列表
     * @auth true
     * @menu true
     */
    public function index()
    {
        $this->title = '用户管理';
        // 使用 QueryHelper 进行数据查询和分页
        $this->_query('SystemUser')
            ->like('username,nickname,phone')
            ->equal('status')
            ->dateBetween('create_at')
            ->order('id desc')
            ->page();
    }

    /**
     * 添加用户
     * @auth true
     * @menu true
     */
    public function add()
    {
        $this->title = '添加用户';
        $this->_form('SystemUser', 'form');
    }

    /**
     * 编辑用户
     * @auth true
     * @menu true
     */
    public function edit()
    {
        $this->title = '编辑用户';
        $this->_form('SystemUser', 'form');
    }

    /**
     * 删除用户
     * @auth true
     */
    public function remove()
    {
        $this->_delete('SystemUser');
    }

    /**
     * 表单数据处理
     */
    protected function _form_filter(&$data)
    {
        if ($this->request->isPost()) {
            // 验证必填字段
            if (empty($data['username'])) {
                $this->error('用户名不能为空');
            }
            if (empty($data['password']) && empty($data['id'])) {
                $this->error('密码不能为空');
            }
            
            // 密码加密
            if (!empty($data['password'])) {
                $data['password'] = md5($data['password']);
            } else {
                unset($data['password']);
            }
        }
    }
}

创建视图文件

列表页面 (app/admin/view/user/index.html):

{extend name="admin@public/container" /}

{block name="button"}
<button data-open='{:url("add")}' data-title="添加用户" class='layui-btn layui-btn-sm layui-btn-primary'>
    <i class="layui-icon layui-icon-add-1"></i> 添加用户
</button>
<button data-action='{:url("remove")}' data-rule="id#{key}" data-confirm="确定要删除选中的用户吗?" class='layui-btn layui-btn-sm layui-btn-danger'>
    <i class="layui-icon layui-icon-delete"></i> 删除用户
</button>
{/block}

{block name="content"}
<div class="think-box-shadow">
    <table class="layui-table" lay-skin="line">
        <thead>
        <tr>
            <th class="text-left nowrap">用户信息</th>
            <th class="text-left nowrap">联系方式</th>
            <th class="text-center nowrap">状态</th>
            <th class="text-center nowrap">创建时间</th>
            <th class="text-center nowrap">操作</th>
        </tr>
        </thead>
        <tbody>
        {foreach $list as $key => $vo}
        <tr>
            <td class="nowrap">
                <div class="inline-block sub-text">
                    <div>用户名:{$vo.username|default='--'}</div>
                    <div>昵称:{$vo.nickname|default='--'}</div>
                </div>
            </td>
            <td class="nowrap">
                <div class="inline-block sub-text">
                    <div>手机:{$vo.phone|default='--'}</div>
                    <div>邮箱:{$vo.email|default='--'}</div>
                </div>
            </td>
            <td class="text-center nowrap">
                {if $vo.status eq 1}
                <span class="layui-badge layui-bg-green">正常</span>
                {else}
                <span class="layui-badge">禁用</span>
                {/if}
            </td>
            <td class="text-center nowrap">{$vo.create_at|format_datetime}</td>
            <td class="text-center nowrap">
                <a data-open='{:url("edit")}?id={$vo.id}' data-title="编辑用户" class="layui-btn layui-btn-xs layui-btn-normal">编辑</a>
                <a data-action='{:url("remove")}' data-value="{$vo.id}" data-confirm="确定要删除这个用户吗?" class="layui-btn layui-btn-xs layui-btn-danger">删除</a>
            </td>
        </tr>
        {/foreach}
        </tbody>
    </table>
    {empty name='list'}<span class="notdata">没有记录哦</span>{else}{$pagehtml|raw|default=''}{/empty}
</div>
{/block}

表单页面 (app/admin/view/user/form.html):

{extend name="admin@public/container" /}

{block name="content"}
<form class="layui-form layui-card" data-auto="true" method="post" autocomplete="off">
    <div class="layui-card-body padding-left-40">
        <div class="layui-form-item">
            <label class="layui-form-label">用户名</label>
            <div class="layui-input-block">
                <input class="layui-input" name="username" value="{$vo.username|default=''}" placeholder="请输入用户名" required>
            </div>
        </div>
        <div class="layui-form-item">
            <label class="layui-form-label">昵称</label>
            <div class="layui-input-block">
                <input class="layui-input" name="nickname" value="{$vo.nickname|default=''}" placeholder="请输入昵称">
            </div>
        </div>
        <div class="layui-form-item">
            <label class="layui-form-label">密码</label>
            <div class="layui-input-block">
                <input class="layui-input" name="password" type="password" placeholder="请输入密码">
                <div class="layui-form-mid layui-word-aux">不填写则不修改密码</div>
            </div>
        </div>
        <div class="layui-form-item">
            <label class="layui-form-label">手机号</label>
            <div class="layui-input-block">
                <input class="layui-input" name="phone" value="{$vo.phone|default=''}" placeholder="请输入手机号">
            </div>
        </div>
        <div class="layui-form-item">
            <label class="layui-form-label">邮箱</label>
            <div class="layui-input-block">
                <input class="layui-input" name="email" value="{$vo.email|default=''}" placeholder="请输入邮箱">
            </div>
        </div>
        <div class="layui-form-item">
            <label class="layui-form-label">状态</label>
            <div class="layui-input-block">
                <input type="radio" name="status" value="1" title="正常" {if $vo.status|default=1 eq 1}checked{/if}>
                <input type="radio" name="status" value="0" title="禁用" {if $vo.status|default=1 eq 0}checked{/if}>
            </div>
        </div>
    </div>
    
    {notempty name='vo.id'}<input type='hidden' value='{$vo.id}' name='id'>{/notempty}
    
    <div class="layui-form-item text-center">
        <button class="layui-btn" type='submit'>保存数据</button>
        <button class="layui-btn layui-btn-danger" type='button' data-confirm="确定要取消编辑吗?" data-close>取消编辑</button>
    </div>
</form>
{/block}

2. 添加路由配置

app/admin/route.php 中添加:

<?php
use think\facade\Route;

// 用户管理路由
Route::group('user', function () {
    Route::get('', 'User/index');
    Route::get('add', 'User/add');
    Route::get('edit', 'User/edit');
    Route::post('save', 'User/save');
    Route::post('remove', 'User/remove');
});

📦 安装插件

1. 安装微信管理模块

composer require zoujingli/think-plugs-wechat

2. 安装其他插件

# 安装账号管理
composer require zoujingli/think-plugs-account

# 安装支付管理
composer require zoujingli/think-plugs-payment

🎯 下一步

❓ 常见问题

Q: 无法访问后台?

A: 检查 PHP 版本是否满足要求,确保数据库已正确初始化。

Q: 文件上传失败?

A: 进入后台系统参数配置,设置正确的文件上传参数。

Q: 如何修改后台入口?

A: 在系统参数配置中修改后台入口地址,提升安全性。


恭喜! 您已经成功搭建了 ThinkAdmin 后台管理系统。现在可以开始您的开发之旅了!