# drone
**Repository Path**: dhl_cherish/drone
## Basic Information
- **Project Name**: drone
- **Description**: 班众教育、PC端操作系统
- **Primary Language**: PHP
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 0
- **Created**: 2022-08-01
- **Last Updated**: 2025-08-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
> ThinkPHP5的运行环境要求PHP5.4以上。
详细开发文档参考 [ThinkPHP5完全开发手册](http://www.kancloud.cn/manual/thinkphp5)
开发约定
===============
## 报错解决方案参考
+ open_basedir相关报错:参考文章:https://www.cnblogs.com/crxis/p/12720257.html
或者 https://blog.csdn.net/msllws/article/details/82191686
+ 前端正常,后端访问404报错,参考文章:https://blog.csdn.net/coreyC/article/details/105640383
+ 访问后台调试信息提示css、js等文件加载失败:修改文件【thinkphp/library/think/View.php】,在$baseReplace中加入两行代码:
~~~
'__ADMIN__' => $root . '/static/admin',
'__PLUG__' => $root . '/plug',
~~~
+ 后台验证码图片不显示:在【public/.htaccess】文件中加入代码:
~~~
Options +FollowSymlinks -Multiviews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?$1 [QSA,PT,L]
SetEnvIf Authorization .+ HTTP_AUTHORIZATION=$0
~~~
## 忽略文件源代码
+ app/database.php
~~~
// +----------------------------------------------------------------------
return [
// 数据库类型
'type' => 'mysql',
// 服务器地址
'hostname' => '127.0.0.1',
// 数据库名
'database' => 'tp5',
// 用户名
'username' => 'root',
// 密码
'password' => 'root',
// 端口
'hostport' => '3306',
// 连接dsn
'dsn' => '',
// 数据库连接参数
'params' => [],
// 数据库编码默认采用utf8
'charset' => 'utf8',
// 数据库表前缀
'prefix' => 'tp_',
// 数据库调试模式
'debug' => true,
// 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器)
'deploy' => 0,
// 数据库读写是否分离 主从式有效
'rw_separate' => false,
// 读写分离后 主服务器数量
'master_num' => 1,
// 指定从服务器序号
'slave_no' => '',
// 自动读取主库数据
'read_master' => false,
// 是否严格检查字段是否存在
'fields_strict' => true,
// 数据集返回类型
'resultset_type' => 'array',
// 自动写入时间戳字段
'auto_timestamp' => false,
// 时间字段取出后的默认时间格式
'datetime_format' => 'Y-m-d H:i:s',
// 是否需要进行SQL性能分析
'sql_explain' => false,
];
~~~
## 项目部署指针
+ 域名应指向 public 目录
## composer 安装 vendor
+ 点击下载[composer](https://getcomposer.org/Composer-Setup.exe) ,安装好之后,请重启电脑
+ 在项目中composer.json文件同级目录下执行composer install
## 调试配置
+ 配置文件:app/config.php ; 配置参数:app_debug 和 app_trace
## 文件命名规范
+ 控制器文件命名:首字母大写
+ 模板文件命名:对应的方法名如果使用的驼峰命名法,模板文件模板请采用小写加下划线方式命名;例:public function demoList(){} ==> demo_list.html
## 菜单管理
+ 【首页】【管理】【系统配置】三大基础菜单请勿操作
+ 【首页】【系统配置】为系统模块,请勿写业务代码
## 封装函数
+ 后端封装函数文件:app/admin/common.php
+ 前端封装函数文件:app/index/common.php
+ 前后端封装函数文件:app/common.php
## 数据库配置
+ 数据库配置文件:app/database.php
## 后台开发使用技巧
### KindEditor使用方法:
+ 详细开发文档参考 [KindEditor 4.x开发文档](http://kindeditor.net/docs/index.html)
+ 模板代码:
~~~
~~~
1、第一行代码中的id参数必填参数,且需要和调用initKindEditor传入的ID参数保持一致
2、第二行代码中的name参数为必填参数,data-editor="kindEditor"代码请勿删除或修改
+ js代码:
1、引入js文件代码:
~~~
~~~
2、调用富文本初始化方法:initKindEditor(editor_id, [width], [height], [items]);
调用示例:initKindEditor('editor_id');
### 后台后端控制器
+ 参数判断:GET ==> Request()->isGet() | POST ==> Request()->isPost()
+ 接收参数:POST ==> Request()->post(); | GET && POST ==> Request()->param();
+ 页面标题参数分配:$this->assign('title', '网站设置');
+ 页面返回:return $this->fetch();
+ 获取系统配置函数:C(配置标识);
+ 框架自带URL拼接函数:url(跳转地址, [参数|可使用数组], [生成的URL后缀], [域名]); 使用示例:url('demoList', ['id' => 1]) ==>
域名/默认当前模块/默认当前控制器/demoList/id/1.html
+ 表单提交:class加上ajax-post为异步请求,例:class="btn btn-w-m btn-primary ajax-post"; 后台需使用指定的数据返回封装方法:adminReturn(状态值, 提示信息, 跳转URL,
等待跳转时间); 成功示例:adminReturn(1, '保存成功', url('demoList')); 失败示例:adminReturn(2, '保存失败');
+ 表单返回:class加上back-page,例:class="btn btn-w-m btn-default back-page"
+ 删除数据:class加上ajax-del为异步请求,例:class="btn btn-white btn-sm ajax-del"; 后台需使用指定的数据返回封装方法:adminReturn(状态值, 提示信息, 跳转URL,
等待跳转时间); 成功示例:adminReturn(1, '删除成功'); 失败示例:adminReturn(2, '删除失败');
+ 批量新增 && 批量修改 数据:saveAll($data); 特别说明:假设主键字段是id,$data这个数组中,【没有id】 或者 【id的值该数据表中不存在】,则会新增数据,否则会修改对应id的数据;
具体使用说明请查阅文档:[saveAll](https://www.kancloud.cn/manual/thinkphp5/135189)
+ 新增:insert();
+ 修改:update();
### 后台前端模板
+ 前端使用后端封装函数:以url()方法为例:{:url('demoList', ['id' => 1])}
+ CSS文件引入和样式编写需使用 {block name='css'}{/block} 申明
+ JS文件引入和js代码编写需使用 {block name='js'}{/block} 申明
### 后台分页
+ 分页配置:app/config.php 的 【paginate】配置
+ 控制器:paginate([每页条数,不填则读取config中的配置]); $list = Db::name('user')->paginate();
+ 模板:{$list->render()}
### 列表导出Excel
+ 注意:导出excel的过程中,如果$data数据中包含有emoji表情,则导出的数据中会出现内容缺失,可调用方法removeEmoji来进行emoji表情过滤
+ 控制器命名规则:【export + 当前列表的方法名】;如下面的命名:exportSalesBonusList
+ 后台数据
~~~
public function exportSalesBonusList()
{
$title = '文件名';
$th = ['标题一', '标题二', '标题三'];
$td = ['key1', 'key2', 'key3'];
$data = [
[
'key1' => 'value1',
'key2' => 'value2',
'key3' => 'value3',
], [
'key1' => 'value1',
'key2' => 'value2',
'key3' => 'value3',
]
];
exportExcel($title, $th, $td, $data);
}
~~~
+ 前端使用
~~~
~~~
### 时间日期插件
+ 引入css
~~~
~~~
+ 控件代码
~~~
~~~
+ 引入js && js代码
~~~
~~~
### 微信支付
+ JSAPI支付
~~~
Loader::import('wxsdk\wxPay', EXTEND_PATH);
$obj = new \wxPay();
//调用示例(最后两个参数为可选参数)
$obj->jsApi('ostuA4vgewJwo1WpDFx7itoAd0Mo', '0.01', 'SN202108204328', '商品支付', 'https://www.baidu.com/index/index/notice', '附加数据,原样返回', 1);
~~~
### 支付宝支付
+ 电脑网站支付
~~~
Loader::import('alipaysdk\aliPay', EXTEND_PATH);
$obj = new \aliPay();
$obj->pcPay('SN202108204328', '0.01', '商品支付');
~~~
+ 手机网站支付
~~~
Loader::import('alipaysdk\aliPay', EXTEND_PATH);
$obj = new \aliPay();
$obj->mobilePay('SN202108204328', '0.01', '商品支付');
~~~
### 便捷工具 - MYSQL
+ 1、后台正常新增 数据表-设计表
+ 2、正常新增一个数据表(tp_test)完成之后,在app/command/database文件夹下面会存在一个sql文件:tp_test.sql
+ 3、以上述新增的tp_test数据库为例,运行下面命令行导入到数据库:
> php think importSql tp_test
目录结构
===============
初始的目录结构如下:
~~~
www WEB部署目录(或者子目录)
├─app 应用目录
│ ├─common 公共模块目录(可以更改)
│ ├─module_name 模块目录
│ │ ├─config.php 模块配置文件
│ │ ├─common.php 模块函数文件
│ │ ├─controller 控制器目录
│ │ ├─model 模型目录
│ │ ├─view 视图目录
│ │ └─ ... 更多类库目录
│ │
│ ├─command.php 命令行工具配置文件
│ ├─common.php 公共函数文件
│ ├─config.php 公共配置文件
│ ├─route.php 路由配置文件
│ ├─tags.php 应用行为扩展定义文件
│ └─database.php 数据库配置文件
│
├─public WEB目录(对外访问目录)
│ ├─index.php 入口文件
│ ├─router.php 快速测试文件
│ └─.htaccess 用于apache的重写
│
├─thinkphp 框架系统目录
│ ├─lang 语言文件目录
│ ├─library 框架类库目录
│ │ ├─think Think类库包目录
│ │ └─traits 系统Trait目录
│ │
│ ├─tpl 系统模板目录
│ ├─base.php 基础定义文件
│ ├─console.php 控制台入口文件
│ ├─convention.php 框架惯例配置文件
│ ├─helper.php 助手函数文件
│ ├─phpunit.xml phpunit配置文件
│ └─start.php 框架入口文件
│
├─extend 扩展类库目录
├─runtime 应用的运行时目录(可写,可定制)
├─vendor 第三方类库目录(Composer依赖库)
├─build.php 自动生成定义文件(参考)
├─composer.json composer 定义文件
├─LICENSE.txt 授权说明文件
├─README.md README 文件
├─think 命令行入口文件
~~~