介绍

前言

本文档阅读对象为有php基础的开发者,如何搭建网站运行环境等内容不再赘述。

框架介绍

本后台框架基于thinkphp8 + layui开发

thinkphp8开发手册: https://doc.thinkphp.cn/v8_0/preface.html

layui官方文档:https://layui.dev/docs/2/

系统演示

官方网站:http://www.xnadmin.cn

后台演示:http://v2.xnadmin.cn

应用演示:http://demo.xnadmin.cn

体验账号

登录账号:admin

登录密码:123456

QQ交流群

1027226338

安装配置

运行环境

  • 操作系统:Linux、Windows、Mac OS
  • Web服务器:Nginx、Apache
  • PHP版本:PHP >= 8.0.0
  • MYSQL版本:>= 5.6

安装配置

  1. 设置站点的运行目录为 /public
  2. 导入数据库:根目录下的 db.sql 文件
  3. 修改数据库链接:根目录下的 .env 文件
  4. 修改伪静态,修改好后重启Web服务器

    Nginx伪静态规则

                                        location / {
                                        if (!-e $request_filename){
                                        rewrite  ^(.*)$  /index.php?s=$1  last;   break;
                                        }
                                        }
                                    

    Apache伪静态规则

                                        
                                         RewriteEngine on
                                         RewriteBase /
                                         RewriteCond %{REQUEST_FILENAME} !-d
                                         RewriteCond %{REQUEST_FILENAME} !-f
                                         RewriteRule ^(.*)$ index.php?s=/$1 [QSA,PT,L]
                                        
                                    

目录结构

www  WEB部署目录(或者子目录)
├─app           应用目录
│  ├─admin              后台应用目录
│  │  ├─controller      控制器目录
│  │  ├─validate        验证器目录
│  │  └─view            视图目录
│  ├─common             公共目录
│  │  ├─controller      公共类Base存放目录
│  │  └─model           公共模型目录,CURL生成的Model都存放在这个目录
│  ├─index              前台应用目录
│  │  └─controller      公共类Base存放目录
│  │
│  ├─common.php         公共函数文件
│  └─ ...   │
│
├─config                配置目录
│  ├─cfg                系统配置文件目录,后台“系统配置”生成的配置文件存在这里
│  ├─app.php            应用配置
│  ├─cache.php          缓存配置
│  ├─console.php        控制台配置
│  ├─cookie.php         Cookie配置
│  ├─database.php       数据库配置
│  ├─filesystem.php     文件磁盘配置
│  ├─lang.php           多语言配置
│  ├─log.php            日志配置
│  ├─middleware.php     中间件配置
│  ├─route.php          URL和路由配置
│  ├─session.php        Session配置
│  ├─trace.php          Trace配置
│  └─view.php           视图配置
│
├─view                  视图目录
├─route                 路由定义目录
│  ├─route.php          路由定义文件
│  └─ ...   │
├─public                WEB目录(对外访问目录)
│  ├─static             静态资源目录
│  │  ├─admin           后台静态资源目录
│  │  └─ ...   │
│  ├─index.php          入口文件
│  ├─router.php         快速测试文件
│  ├─nginx.htaccess     用于nginx的重写
│  └─.htaccess          用于apache的重写
│
├─extend                扩展类库目录
│  ├─lib                第三方类库,比如oss、短信SDK、支付类等类库
│  └─utils              系统用到的类库
├─runtime               应用的运行时目录(可写,可定制)
├─vendor                Composer类库目录
├─.env                  环境变量文件  APP_DEBUG开关、数据库地址链接在此文件修改
├─.example.env          环境变量示例文件
├─composer.json         composer 定义文件
├─LICENSE.txt           授权说明文件
├─README.md             README 文件
├─think                 命令行入口文件

插件安装

安装方式

手动安装:从小牛官网下载压缩包,解压后按目录覆盖、导入数据表

插件及应用不强制命名唯一标识,数据表也不强制使用标识前缀,所以安装前先检查是否会和原有模块命名重复。

内置函数

系统封装了一些方法函数,方便调用,文件路径 app/common.php

函数名称 描述
xn_file_size 字节数Byte转换为KB、MB、GB、TB
xn_encrypt 密码加密函数
xn_add_admin_log 写入管理员操作日志
xn_cfg 获取后台“系统配置”的参数,如:xn_cfg('base.logo')
xn_upload_one 上传单图的组件
xn_upload_multi 上传多图的组件

JS相关

基于layer封装的常用函数

函数名(必填参数) 说明 完整参数 演示
xn_msg(msg) msg提示 xn_msg(内容, 秒)
xn_alert(msg) alert弹出框 xn_alert(内容, icon数字, 自定义按钮文字)
xn_alert_reload(msg) alert弹出框,点击确定按钮后刷新页面 xn_alert_reload(内容, icon数字, 自定义按钮文字)
xn_alert_gourl(msg,url) alert弹出框,点击确定按钮调整到指定URL xn_alert_gourl(内容, 网址URL, 自定义按钮文字)

jquery选择器

操作 样式名称 说明 参数 演示
弹窗 .xn_open 打开一个弹窗页面,<a> 标签加上 class='xn_open'

href:弹窗链接地址(必须)

title:窗口标题,非必须

data-width:窗口宽度(需带单位:px或%),非必须

data-height:窗口高度(需带单位:px或%),非必须

代码示例:

<a href="https://www.baidu.com" data-width="600px" data-height="450px" class="xn_open" title="这是演示的">
URL弹窗演示
</a>
URL弹窗演示
ajax提交表单 .xn_ajax 在 <form> 标签加上class='xn_ajax'

action: 需加在form里(必须)

method:使用post方式提交(必须)

data-type:如是弹窗打开的表单页面,需要在form标签里加上 data-type="open",请求成功后将关闭窗口,刷新父iframe页面

<div class="layui-form" lay-filter="layuiadmin-app-form-list" id="layuiadmin-app-form-list">
    <form action="" method="post" class="xn_ajax" data-type="open">

        <div class="layui-form-item">
            <label class="layui-form-label">操作名</label>
            <div class="layui-input-block">
                <input type="text" name="title" placeholder="操作名" autocomplete="off" class="layui-input" value="">
            </div>
        </div>
        <div class="layui-form-item">
            <div class="layui-input-block">
                <button type="submit" class="layui-btn">保存</button>
            </div>
        </div>
    </form>
</div>
删除前提示 .xn_delete 在 <a> 标签加上 class='delete'

href:弹窗链接地址(必须)

title:窗口标题,非必须

<a href="?delete" class="xn_delete" title="确定要删除XXX吗?">
    删除
</a>
删除提示演示

配置管理-开发说明

生成的配置文件在config/cfg文件夹内

通过xn_cfg函数快速获取,如xn_cfg('base.sitename')

如何新增加一个配置项?以下以增加短信配置(sms)为例子

第一步:修改控制器

找到控制器文件 app/admin/controller/Config.php

index方法找到如下代码并添加上'sms' => '短信配置'选项,如下:

        $items = [
            'base' => '基础配置',  //key对应模版名称以及配置文件名  value为标题名称
            'upload' => '上传配置',
            'sms' => '短信配置',
        ];
                        

第二步:增加view视图模版

找到目录app/admin/view/config/include新建一个模版,模版名称为sms.html
模版结构大致如下,请根据自己的需求更改

<form action="{:request()->url()}" method="post" class="xn_ajax">
    <!--增加配置项需要加对应的名称-->
    <input type="hidden" name="type" value="sms" />
    <div class="layui-row">
        <div class="layui-col-xs6">
            <div class="layui-form" wid100="" lay-filter="">
                <fieldset class="layui-elem-field layui-field-title" style="margin-top: 30px;">
                    <legend>XXX短信</legend>
                </fieldset>
                <div class="layui-form-item">
                    <label class="layui-form-label">AppID</label>
                    <div class="layui-input-block">
                        <input type="text" name="appid" value="{$data.sms.appid}" class="layui-input">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">Key</label>
                    <div class="layui-input-block">
                        <input type="text" name="key" value="{$data.sms.key}" class="layui-input">
                    </div>
                </div>
                <div class="layui-form-item">
                    <div class="layui-input-block">
                        <button class="layui-btn" lay-submit="">确认保存</button>
                    </div>
                </div>
            </div>
        </div>
    </div>
</form>

注意:以上表单<input type="hidden" name="type" value="" />的值必须与新添加的配置标识对应

获取配置参数

例如刚刚设置的短信参数配置,可以用过系统内置函数xn_cfg获得
如获取例子中的Appid,可以使用xn_cfg('sms.appid')获得