Skip to content
🚀 基于swoft 2&xadmin开发的后台管理系统🎄
PHP HTML JavaScript CSS PLpgSQL
Branch: master
Clone or download
Latest commit 238e6e9 Nov 29, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
app
bin init Nov 28, 2019
config 修复一些bug,更新到v0.1.0 Nov 29, 2019
public 更新v0.0.2 Nov 28, 2019
resource/views 修改ws路径错误和页面错误 Nov 29, 2019
test
.env 修复一些bug,更新到v0.1.0 Nov 29, 2019
.gitignore no message Nov 29, 2019
.phpstorm.meta.php
LICENSE
README.md
README.zh-CN.md init Nov 28, 2019
composer.cn.json init Nov 28, 2019
composer.json 修复一些bug,更新到v0.1.0 Nov 29, 2019
composer.lock 修复一些bug,更新到v0.1.0 Nov 29, 2019
phpunit.xml

README.md

swoft

swoft Xadmin

基于swoft 2.x 和 xadmin 开发的快速后台框架。

版本和依赖要求:
  • php 7.2+
  • swoole 4.4+
  • php-redis拓展
  • linux或macos系统
参考文档

swoole文档
swoft文档
xadmin演示

升级记录

版本 更新内容
v0.0.1
v0.0.2 删除一个特别智障的问题
v0.0.3 修复一些特别蛋疼的问题
v0.1.0 修复一些无聊的问题,使用官方session组件

安装方法

  • 1、修改./config/dev(pro)/bese.php中关于数据库的配置
  • 2、在mysql中新建一个数据库
  • 3、composer install
  • 4、执行php bin/swoft install:exec,如果数据库中出现表说明安装成功
  • 5、启动框架访问

启动方式

    swoftcli run -c ws:start

或者

    php bin/swoft ws:start

切换配置

应用配置位于 ./config/{ENV}/base.php
切换环境配置只需要将./app/base.php文件中的配置修改为:

//应用级配置
    'config'   => [
        'path' => __DIR__ . '/../config',
        'env' =>'pro' //pro为生产环境配置,dev为开发环境配置
    ],

分组路由

支持分组路由,如 http://DOMAIN/admin/auth.group/lists,对应目录: Http/Controller/Admin/Auth/AdminController

快速curd模板

内置快速curd操作,可以方便快捷的搭建出常用的curd功能。支持:

  • lists 分页列表
  • add 添加
  • edit 修改
  • del 删除
  • 快捷导出到excel

使用要求

  • 控制器的名称必须与路由名称对应,如: IndexController.php 路由地址必须是 /admin/index
  • 提供各种重写方法,以 __foo格式重写,返回指定的格式;
  • 模板引擎使用THINKPHP,文档地址: think-template

路径定义

http://DOMAIN/admin/{Controller}/{lists/add/edit/del}/{?id=}

Controller 为你的控制器名称,路由将自动寻找 controller/{lists/add/edit/del}模板文件 如:http://DOMAIN/admin/index/lists ,路由器会寻找/resource/views/index/lists.html模板文件,否则将会抛出异常到控制台。

全局配置

在需要使用快速curd模板的控制器中引入Trait(trait引入方式见php document)即可

use \App\Http\Traits\HttpBaseTrait;

关联实体模型

protected $model ={Entity}::class;

Entity :你需要关联的实体名称:如

protected $model =Admin::class; 

一、list列表模板

http://DOMAIN/admin/{Controller}/lists

lists 分页模板会查找你绑定的实体内容并将内容分页输出。 lists将会输出以下变量:

  • $list: 格式化后的分页数据
  • $keywords: 查询的条件名称
  • $page; html分页样式(前端模板使用原生方式输出 {:$page} )

lists快捷模板

一、模糊搜索
<div class="layui-input-inline">
    <input type="text" name="params[like][value]" lay-verify="title" autocomplete="off" placeholder="请输入关键词" class="layui-input layui-btn-sm" value="<?php echo($data['keywords']['like']['value']); ?>">
    <input name="params[like][fields]" value="{field1}|{field2}" type="hidden">
    <input type="submit" >
</div>
  • params[like][value]params[like][fields]为固定模板查询name值
  • {field1}|{field2}替换成你需要查询的数据库的表字段(必须与表字段对应),使用管道符"|" 分割。
二、精确搜索
 <input type="input" name="params[{fields}]" value="{your values}">
  • name="params[{fields}]" fields替换成你需要查询的字段名称;
  • value="{your values}" your values为你需要搜索的值

重写方法

一、 重写请求查询条件方法

用于重写查询条件,返回条件数组

__listsKeywords(array $params, array $map):array
  • array $param 通过 \context()->getRequest()->input(); 获取的请求参数。
  • array $map 组装好的符合swoft的ORM查询条件数组
  • 必须返回符合swoft的ORM查询条件数组!
二、重写查询语句

用于定制特殊查询语句,返回查询结果

__listsData(array $map,array $params):array
  • array $map 符合swoft的ORM查询条件数组

  • array $params 通过\context()->getRequest()->input()获取的参数

  • 返回查询的结果的数组

三、重写渲染页面

用于自行渲染页面,返回标准响应结果

__listsDisplay(array $buildData):Response
  • array $buildData 包含array $list查询结果,array $keywords请求参数数组,string $page分页html样式
  • 返回Swoft\Http\Message\Response 对象

二、add\edit快捷模板

http://DOMAIN/admin/{Controller}/{add/edit}{/?id=}

2.1 添加页面

http://DOMAIN/admin/{Controller}/add
  • 模板文件名必须为info.html
一、重写添加渲染页面
__addDisplay():Response
  • 重写渲染页面,返回Swoft\Http\Message\Response 对象
__addUpdateBefore(array $requestParams):bool
  • 重写插入数据方法,用于自行写入数据库操作
  • 返回boolean值用于判断是否执行成功

2.2 修改页面

http://DOMAIN/admin/{Controller}/edit/?id={index_id}
  • 模板文件名必须为info.html
  • 请求id必须为主键id
__editUpdateBefore(array $requestParams):bool
  • 重写插入数据方法,用于自行更新数据库操作
  • 返回boolean值用于判断是否执行成功
一、重写修改渲染页面
__editDisplay(array $info):Response
  • array $info主键查询结果数组。
  • 重写渲染页面,返回Swoft\Http\Message\Response 对象

2.3 添加/修改数据

添加数据

http://DOMAIN/admin/{Controller}/add

添加数据模板name字段必须跟mysql表字段对应。

修改数据

http://DOMAIN/admin/{Controller}/edit

修改数据必须提交带有主键ID的值

添加/修改前置方法

__{add/edit}Before(array $request):array
  • array $request 提交的参数值
  • 必须返回array类型参数

添加/修改后置方法

__{add/edit}After(Mix $result):Response
  • mix $result 数据库提交、更新结果
  • 必须返回Swoft\Http\Message\Response对象

三、快捷删除

http://DOMAIN/admin/{Controller}/del{/?id=}
  • id参数可以get/post提交,id为表主键
  • 该方法为硬删除(不保留数据)

前置方法

__delBefore(array $map):$map
  • array $map符合swoft ORM条件的数组
  • 返回符合swoft ORM条件的数组

后置方法

__delAfter(Mix $result):Response
  • mix $result 数据库提交、更新结果
  • 必须返回Swoft\Http\Message\Response对象

四、导出到excel

添加导出按钮

 <button class="layui-btn layui-btn-normal" onclick="outputExcel('{:getOutputUri()}')">
    <i class="layui-icon">&#xe601;</i> 导出到excel
 </button>

配置

在需要导出的类中添加配置

    protected $output=[
      ["字段名称","excel标题名称",{['为true字段','为false字段']}],
    ];
  • 第1个值为在mysql中的字段名称
  • 第2个字为在excel中标题的名称(需要跟第一个值一一对应)
  • 第3个为选填值,该值为条件值,需要修改字段在excel中的展示值(如 status=1 ,那么第三个字段写成['开启', '禁用'])

eg

    protected $output=[
      ["admin_id","id"],
      ["admin_username","用户名"],
      ["created_at","创建时间"],
      ["admin_bs","状态",['启用','禁用']],
      ["admin_nickname","昵称"],
      ["group_name","所属组"],
    ];

Swoft is an open-source software licensed under the LICENSE

power by ethan[touch_789@163.com] LICENSE

You can’t perform that action at this time.