Merge pull request #2 from hi-tpext/dependabot/composer/guzzlehttp/psr7-2.5.0 Bump guzzlehttp/psr7 from 2.4.4 to 2.5.0
Merge pull request #2 from hi-tpext/dependabot/composer/guzzlehttp/psr7-2.5.0
Bump guzzlehttp/psr7 from 2.4.4 to 2.5.0
安装 composer
composer
https://pkg.phpcomposer.com/#how-to-install-composer/
安装 git
git
https://git-scm.com/
安装 [webman] 和 [tpextmyadmin] https://github.com/hi-tpext/tpextmyadmin/tree/4.0
composer create-project workerman/webman mywebman cd mywebman composer require ichynul/tpextmyadmin:^4.0.6
安装完毕,此安装版是最小模式,只包含基本的后台功能,建议开发新项目时使用此方式。
git拉取,依次执行以下命令,mywebman 为新项目目录,可自行调整
mywebman
git clone https://github.com/hi-tpext/mywebman.git mywebman cd mywebman composer update
相关演示代码在https://github.com/hi-tpext/mywebman app/admin/中,数据库脚本由[myadmindata]扩展提供,请下载安装。
app/admin/
[myadmindata]
安装完毕,此安装版是最和演示站同步的,如果你想自己搭建演示站可用此方式。
注意:此方式的仓库是不带composer依赖vendor目录的,请务必运行composer update安装所有依赖后再访问网站。
vendor
composer update
新版本默认开启控制器后缀:'controller_suffix' => 'Controller',
'controller_suffix' => 'Controller',
请关闭它,在config/app.php中修改为:
config/app.php
'controller_suffix' => '',
/config/thinkorm.php
浏览器输入 [http://localhost:8787/admin] 打开,如果没有事先配置数据库,将会跳转到配置数据库的页面(若不能正常跳,配置数据库后再试)。
http://localhost:8787/admin
自动安装基础扩展
手动安装 [tpext.myadmin],确保此扩展优先,以支持其他扩展的后台菜单创建
tpext.myadmin
默认账号:admin:tpextadmin
admin
tpextadmin
安装成功后自动创建id为1的超级管理员,并处于登录状态。
手动安装其余装扩展
传统的php-fpm一般是以 public 作为启动目录,为保持兼容,建议进入 public 目录执行启动命令:
public
[linux]
启动:
cd public php ../start.php start
[windows]
cd public php ..\windows.php
或修改把 windows.bat 移入 public 目录并修改内容:
windows.bat
CHCP 65001 php ..\windows.php pause
cd public .\windows.bat
extend扩展基于composer.josn配置
composer.josn
初次安装会自动修改composer。json(命令行会提示:注册扩展目录:extend/成功,composer.json文件已修改),但修改后仍然需要下次运行composer相关命名才生效。
composer。json
注册扩展目录:extend/成功,composer.json文件已修改
如果下载extend插件不能识别,提示:
执行出错: 未匹配到扩展
暂时解决办法删除vendor中的某个依赖,然后运行composer u重新下载,之后使extend生效。
composer u
extend
比如可以删除vendor/ichynul。
vendor/ichynul
https://gxzrnxb27j.k.topthink.com/@tpext-docs/about.html
[tp6.1] http://gaosu.shenzhuo.vip:50469/admin
[webman] http://gaosu.shenzhuo.vip:50468/admin
admin:tpextadmin
1.模块化开发,核心功能都是通过 composer 安装的
2.tpextbuilderUI模块基于bootstrap和Light-Year-Admin-Template的后台模板, 封装了大部分常用组件 :
tpextbuilder
bootstrap
Light-Year-Admin-Template
Column、Row、Tab、Table、Form、Toolbar、Layer、Content
Column
Row
Tab
Table
Form
Toolbar
Layer
Content
3.HasBuilder 封装了常用操作,可供控制器引入使用
HasBuilder
Thinkphp版:https://github.com/hi-tpext/myadmin
webman插件主页:https://www.workerman.net/plugin/70
<?php namespace app\admin\controller; use app\common\logic\MemberLogic; use app\common\model; use think\Controller; use tpext\builder\traits\HasBuilder; /** * Undocumented class * @title 会员管理 */ class Member extends Controller { use HasBuilder; /** * Undocumented variable * * @var model\Member */ protected $dataModel; protected function initialize() { $this->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); } }
Tpext 系列扩展和使用了以下框架技术或受到其启发:
Tpext
Apache2
©Copyright 2023 CCF 开源发展委员会 Powered by Trustie& IntelliDE 京ICP备13000930号
欢迎使用
一、安装
框架需要使用 composer和git
安装
composer
https://pkg.phpcomposer.com/#how-to-install-composer/
安装
git
https://git-scm.com/
方式一、使用
composer
全新安装安装 [webman] 和 [tpextmyadmin] https://github.com/hi-tpext/tpextmyadmin/tree/4.0
方式二、使用
git
安装演示站webman1.4.x
新版本默认开启控制器后缀:
'controller_suffix' => 'Controller',
请关闭它,在
config/app.php
中修改为:'controller_suffix' => '',
二、配置
/config/thinkorm.php
中配置数据库,或在网页中配置[见下一步]三、扩展安装
浏览器输入 [
http://localhost:8787/admin
] 打开,如果没有事先配置数据库,将会跳转到配置数据库的页面(若不能正常跳,配置数据库后再试)。自动安装基础扩展
手动安装 [
tpext.myadmin
],确保此扩展优先,以支持其他扩展的后台菜单创建默认账号:
admin
:tpextadmin
安装成功后自动创建id为1的超级管理员,并处于登录状态。
手动安装其余装扩展
四、登录后台
http://localhost:8787/admin
]打开,进入后台主页。一些问题
运行目录
传统的php-fpm一般是以
public
作为启动目录,为保持兼容,建议进入public
目录执行启动命令:[linux]
启动:
[windows]
启动:
或修改把
windows.bat
移入public
目录并修改内容:启动:
extend
extend扩展基于
composer.josn
配置初次安装会自动修改
composer。json
(命令行会提示:注册扩展目录:extend/成功,composer.json文件已修改
),但修改后仍然需要下次运行composer
相关命名才生效。如果下载extend插件不能识别,提示:
暂时解决办法删除
vendor
中的某个依赖,然后运行composer u
重新下载,之后使extend
生效。比如可以删除
vendor/ichynul
。五、文档
https://gxzrnxb27j.k.topthink.com/@tpext-docs/about.html
六、演示
网址
[tp6.1] http://gaosu.shenzhuo.vip:50469/admin
[webman] http://gaosu.shenzhuo.vip:50468/admin
账号
admin
:tpextadmin
注意事项
七、功能特性
1.模块化开发,核心功能都是通过
composer
安装的主要扩展依赖
2.
tpextbuilder
UI模块基于bootstrap
和Light-Year-Admin-Template
的后台模板, 封装了大部分常用组件 :Column
、Row
、Tab
、Table
、Form
、Toolbar
、Layer
、Content
3.
HasBuilder
封装了常用操作,可供控制器引入使用Thinkphp版:https://github.com/hi-tpext/myadmin
webman插件主页:https://www.workerman.net/plugin/70
实例
八、QQ群
九、效果展示
十、鸣谢
Tpext
系列扩展和使用了以下框架技术或受到其启发:十一、License
Apache2