# myadmin **Repository Path**: tpext/myadmin ## Basic Information - **Project Name**: myadmin - **Description**: 基于 [tp5.1 / tp6.x / webman ]快速后台开发框架,UI使用[bootstrap],仅使用PHP代码即可完成界面布局(from、table)。集成CRUD快速生成模型、控制器、翻译等,集成后台权限控制,开箱即用。 - **Primary Language**: PHP - **License**: Apache-2.0 - **Default Branch**: 6.0 - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 45 - **Forks**: 15 - **Created**: 2020-03-06 - **Last Updated**: 2025-11-30 ## Categories & Tags **Categories**: backend **Tags**: ThinkPHP, CRUD, PHP, Bootstrap, admin ## README # 欢迎使用 基于 [tp5.1 / tp6.x /tp8.x / webman ]快速后台开发框架。 UI 使用的是:光年(Light Year Admin)后台管理系统模板:https://gitee.com/yinqi/Light-Year-Admin-Template ## 一、安装 ### tp框架有两个版本 - `5.1` 基于thinkphp 5.1 - `6.0` 基于thinkphp 6.x/8.x ### 基于`webman`的实现: ###2024-07-06更新: tp6基于vue3的版本可试用,见:https://github.com/hi-tpext/tpext-myadmin/tree/5.0 --- ### 框架需要使用 composer和git 安装 `composer` 安装 `git` ### 使用 `composer` 全新安装 > 安装 thinkphp(`5.1` 或 `6.0`,根据您的需要,选择其中一个版本), [5.1]分支对应 `tpextmyadmin`的[1.0]分支,依次执行以下命令,`myadmin` 为新项目目录,可自行调整 ```bash composer create-project topthink/think=5.1.* myadmin cd myadmin composer require ichynul/tpextmyadmin:^1.* ``` 或 [6.0]分支对应 `tpextmyadmin`的[3.0]分支,依次执行以下命令,`myadmin6` 为新项目目录,可自行调整 ```bash composer create-project topthink/think=6.1.* myadmin6 cd myadmin6 composer require ichynul/tpextmyadmin:^3.* #2025-03-17 更新:已支持tp8,调整版本号 `topthink/think=8.0` ``` > 安装完毕,此安装版是最小模式,只包含基本的后台功能,建议开发新项目时使用此方式。 --- ### 使用 `git` 安装演示站 > 拉取 `5.1` 分支代码,依次执行以下命令,`myadmin` 为新项目目录,可自行调整 ```bash git clone -b 5.1 https://github.com/hi-tpext/myadmin.git myadmin cd myadmin composer update ```` 或 拉取 `6.0` 分支代码,依次执行以下命令,`myadmin6` 为新项目目录,可自行调整 ```bash git clone -b 6.0 https://github.com/hi-tpext/myadmin.git myadmin6 cd myadmin6 #2025-03-17 更新:已支持tp8,可在clone完成后,修改`composer.json`,调整thinkphp版本号 `"topthink/framework": "^8.0"` composer update ``` > 相关演示代码在`application/admin/`或`app/admin/`中,数据库脚本由`[myadmindata]`扩展提供,请下载安装。 > 安装完毕,此安装版是最和演示站同步的,如果你想自己搭建演示站可用此方式。 > 注意:此方式的仓库是不带`composer`依赖`vendor`目录和`thinkphp`目录的,请务必运行`composer update`安装所有依赖后再访问网站。 ### 一些问题 - 细节很重要,安装过程中若有问题,请多检查。 - 比如创建项目后没进入新项目目录就运行命令,再比如跑到`public`里面运行命令的,网站运行目录没指向到`public`的。 - `composer`报错的版本冲突,php版本不符问题,php依赖缺失(如curl、zip),php方法被禁用等。 - 因为涉及到的东西不可能所有的都列出来详细的讲。 --- ## 二、配置 - `apache/nginx` 重写规则,略(自行百度) ***重要** - 没配置`重写规则`的话后续的url中加上`index.php` - 如:`http://localhost:8081/index.php/admin` ## 三、扩展安装 1. 浏览器输入 [`http://localhost:8081/admin`] 打开,如果没有事先配置数据库,将会跳转到配置数据库的页面。 2. 自动安装基础扩展 3. 手动安装 [`tpext.myadmin`],确保此扩展优先,以支持其他扩展的后台菜单创建 4. 手动安装其余装扩展 ## 四、进入后台 - 浏览器再次输入[`http://localhost:8081/admin`]打开,会跳转后台主页,安装成功后默认创建管理员账号并处于已登录状态。 - 默认账号:`admin`:`tpextadmin` - 成功登录后台即说明安装完成 --- ## 五、文档 ## 六、演示 ### 网址 https://yes.shenzhuo.vip/admin ### 账号 账号:`admin` 密码:`tpextadmin` ### 注意事项 - 请不要乱修改数据 - 请不要上传非法内容或图片 - 请不要上传您的重要数据到上面以防泄漏 - 有问题请联系:ichynul#163.com (#换@),或通过群联系。 - 演示网站偶尔不稳定,会定期重启 ## 七、功能特性 1.模块化开发,核心功能都是通过 `composer` 安装的 ### 主要扩展依赖 - [tpext] 扩展核心 - [tpextbuilder] UI 生成器 - [tpextmanager] 管理工具 - [lightyearadmin] 基础样式库 - [tpextmyadmin] 集成后台基础功能:权限、设置等 - [更多] 查看全部扩展介绍 2.`tpextbuilder`UI模块基于`bootstrap`和`Light-Year-Admin-Template`的后台模板, 封装了大部分常用组件 : `Column`、`Row`、`Tab`、`Table`、`Form`、`Toolbar`、`Layer`、`Content` 3.`HasBuilder` 封装了常用操作,可供控制器引入使用 #### 实例 ```php dataModel = new model\Member; $this->pageTitle = '会员管理'; $this->enableField = 'status'; $this->pagesize = 8; /* 作为下拉选择数据源 相关设置 */ //显示 $this->selectTextField = '{id}#{nickname}({mobile})'; //like查询字段,$this->dataModel->where('username|nickname|mobile', 'like', $kwd); $this->selectSearch = 'username|nickname|mobile'; } protected function filterWhere() { $searchData = request()->get(); $where = []; if (!empty($searchData['id'])) { $where[] = ['id', 'eq', $searchData['id']]; } if (!empty($searchData['username'])) { $where[] = ['username', 'like', '%' . $searchData['username'] . '%']; } if (!empty($searchData['nickname'])) { $where[] = ['nickname', 'like', '%' . $searchData['nickname'] . '%']; } if (!empty($searchData['mobile'])) { $where[] = ['mobile', 'like', '%' . $searchData['mobile'] . '%']; } if (isset($searchData['status']) && $searchData['status'] != '') { $where[] = ['status', 'eq', $searchData['status']]; } if (isset($searchData['level']) && $searchData['level'] != '') { $where[] = ['level', 'eq', $searchData['level']]; } if (!empty($searchData['province'])) { $where[] = ['province', 'eq', $searchData['province']]; if (!empty($searchData['city'])) { $where[] = ['city', 'eq', $searchData['city']]; if (!empty($searchData['area'])) { $where[] = ['area', 'eq', $searchData['area']]; } } } return $where; } /** * 构建搜索 * * @return void */ protected function builSearch() { $search = $this->search; $search->text('id', '会员id')->maxlength(20); $search->text('username', '账号')->maxlength(20); $search->text('nickname', '昵称')->maxlength(20); $search->text('mobile', '手机号')->maxlength(20); $search->select('level', '等级')->optionsData(model\MemberLevel::order('level')->select(), 'name', 'level')->afterOptions([0 => '普通会员']); $search->select('status', '状态')->options([0 => '禁用', 1 => '正常']); $search->select('province', '省份')->dataUrl(url('api/areacity/province'), 'ext_name')->withNext( $search->select('city', '城市')->dataUrl(url('api/areacity/city'), 'ext_name')->withNext( $search->select('area', '地区')->dataUrl(url('api/areacity/area'), 'ext_name') ) ); } /** * 构建表格 * * @return void */ protected function buildTable(&$data = []) { $table = $this->table; $table->show('id', 'ID'); $table->image('avatar', '头像')->thumbSize(50, 50)->default('/static/images/touxiang.png'); $table->show('username', '账号'); $table->text('nickname', '昵称')->autoPost()->getWrapper()->addStyle('width:130px'); $table->show('mobile', '手机号')->getWrapper()->addStyle('width:100px'); $table->match('gender', '性别')->options([1 => '男', 2 => '女', 0 => '未知'])->getWrapper()->addStyle('width:50px'); $table->show('age', '性别'); $table->show('level_name', '等级'); $table->show('money', model\MemberAccount::$types['money']); $table->show('points', model\MemberAccount::$types['points']); $table->show('pca', '省市区'); $table->switchBtn('status', '状态')->default(1)->autoPost()->getWrapper()->addStyle('width:60px'); $table->show('last_login_time', '最近登录')->getWrapper()->addStyle('width:150px'); $table->show('create_time', '注册时间')->getWrapper()->addStyle('width:150px'); $table->sortable('id,sort,money,points,commission,re_comm,shares,last_login_time'); $table->getToolbar() ->btnAdd() ->btnEnableAndDisable('启用', '禁用') ->btnRefresh(); $table->getActionbar() ->btnEdit() ->btnView() ->btnLink('account', url('/admin/memberaccount/add', ['member_id' => '__data.pk__']), '', 'btn-success', 'mdi-square-inc-cash'); } /** * 构建表单 * * @param boolean $isEdit * @param array $data */ protected function builForm($isEdit, &$data = []) { $form = $this->form; $form->tab('基本信息'); $form->image('avatar', '头像')->thumbSize(50, 50); $form->text('username', '账号')->required()->maxlength(20); $form->text('nickname', '昵称')->required()->maxlength(20); $form->text('mobile', '手机号')->maxlength(11); $form->text('email', '邮件')->maxlength(60); $form->number('age', '年龄')->max(100)->min(1)->default(18); $form->radio('gender', '性别')->options([0 => '未知', 1 => '男', 2 => '女'])->default(0); $form->tab('其他信息'); $form->textarea('remark', '备注')->maxlength(255); $form->switchBtn('status', '状态')->default(1); if ($isEdit) { $form->show('last_login_time', '最近登录时间'); $form->show('create_time', '注册时间'); $form->show('update_time', '修改时间'); } } /** * 保存数据 * * @param integer $id * @return void */ private function save($id = 0) { $data = request()->only([ 'avatar', 'username', 'nickname', 'mobile', 'email', 'gender', 'age', 'status', 'remark', ], 'post'); $result = $this->validate($data, [ 'username|账号' => 'require', 'nickname|昵称' => 'require', 'mobile|手机号' => 'mobile', 'age|年龄' => 'number', ]); if (true !== $result) { $this->error($result); } return $this->doSave($data, $id); } } ``` ## 八、QQ群 ## 九、效果展示 ![alt 1](https://gitee.com/tpext/myadmin/raw/5.1/images/1.png "1") ![alt 2](https://gitee.com/tpext/myadmin/raw/5.1/images/2.png "2") ![alt 3](https://gitee.com/tpext/myadmin/raw/5.1/images/3.png "3") ![alt 4](https://gitee.com/tpext/myadmin/raw/5.1/images/4.png "4") ![alt 5](https://gitee.com/tpext/myadmin/raw/5.1/images/5.png "5") ![alt 6](https://gitee.com/tpext/myadmin/raw/5.1/images/6.png "6") ![alt 7](https://gitee.com/tpext/myadmin/raw/5.1/images/7.png "7") ![alt 8](https://gitee.com/tpext/myadmin/raw/5.1/images/8.png "8") ## 十、鸣谢 `Tpext` 系列扩展和使用了以下框架技术或受到其启发: - Thinkphp - Botstrap - Lightyear-admin - Laravel-admin - Jquery - Layer - Bootstrap-number-input - Bootstrap-duallistbox - Bootstrap-datepicker - Bootstrap-daterangepicker - Bootstrap-colorpicker - Bootstrap-maxlength - Bootstrap-touchspin - Webuploader - FontIconPicker - Select2 - Dropzone - ZTree - Jstree - CKEditor - Editormd - Tinymce - UEditor - WangEditor - AreaCity-JsSpider-StatsGov - 等 ## 十一、License Apache2