mano-code/ custom-extend
基于owl-admin和amis的底层自定义扩展
v1.1.7
2024-09-30 06:22 UTC
Requires
- php: >=8.0
- slowlyo/owl-admin: *
- slowlyo/owl-dict: *
README
中继owl-admin、增加自定义组件
安装本扩展
composer require mano-code/custom-extend
1. 为了方便初学者避免遇到PHP扩展以及配置问题,推荐使用docker-compose作为环境编排。运行环境需要安装docker
a. 发布配置
php artisan publish:docker
b. 启动环境
docker-compose up -d
如需进入docker环境内的运行环境,调试命令请使用即可进入容器内终端
docker-compose exec api bash
如需修改访问端口,则在项目目录下的docker-compose.yml内修改services->nginx->ports的8000为你要使用的端口,默认端口为:localhost:8000/admin
2. 为了解决字典自动加载,以及扩展更新时新增的Migration文件。使用\ManoCode\CustomExtend\Extend\ManoCodeServiceProvider作为基础服务提供者即可解决。具体使用方式参考如下
并且将扩展依赖加入到自己扩展的composer.json->require内。版本要求为:*
在自己扩展内的src/XxxxServiceProvider.php内修改继承类为ManoCodeServiceProvider如下所示。
<?php namespace ManoCode\Demo; use ManoCode\CustomExtend\Extend\ManoCodeServiceProvider; /** * 扩展的服务提供者 */ class DemoServiceProvider extends ManoCodeServiceProvider { protected $menu = [ [ 'parent' => '', 'title' => '演示系统', 'url' => '/demo', 'url_type' => '1', 'icon' => 'ant-design:file-zip-outlined', ] ]; protected $dict = [ [ 'key' => 'filesystem.driver', 'value' => '文件系统驱动', 'keys' => [ [ 'key' => 'local', 'value' => '本地存储' ], [ 'key' => 'kodo', 'value' => '七牛云kodo' ], [ 'key' => 'cos', 'value' => '腾讯云COS' ], [ 'key' => 'oss', 'value' => '阿里云OSS' ] ] ] ]; protected $permission = [ [ 'name'=>'测试权限', 'slug'=>'test', 'method'=>[],// 空则代表ANY 'path'=>[],// 授权接口 'parent'=>'',// 父级权限slug字段 ], [ 'name'=>'测试接口', 'slug'=>'test', 'method'=>[ 'POST', 'GET', ],// 空则代表ANY 'path'=>[ '/test/api*' ],// 授权接口 'parent'=>'test',// 父级权限slug字段 ], ]; }
3. 如需定义API直接提供给外部使用,或者自定义鉴权机制,则可以在扩展目录下的src/Http/api_routes.php定义路由。此文件默认不存在,需要自己创建。
新建路由文件src/Http/api_routes.php
写入自己的路由如下所示
本路由可以使用/demo直接访问,与admin_api无关
<?php use Illuminate\Support\Facades\Route; Route::any('/demo',function(){ return ['msg'=>'HelloWorld']; }); Route::get('/test',[ManoCode\FileSystem\Http\Controllers\DemoApiController::class,'test']); Route::get('/test1',[ManoCode\FileSystem\Http\Controllers\DemoApiController::class,'test1']);
4. API逻辑交互也提供了json返回的工具类
新建控制器,use ApiResponseTrait;即可通过$this调用接口返回工具
<?php namespace ManoCode\FileSystem\Http\Controllers; use Illuminate\Routing\Controller; use ManoCode\CustomExtend\Traits\ApiResponseTrait; /** * */ class DemoApiController extends Controller { use ApiResponseTrait; public function test() { return $this->success('测试成功',[ 'list'=>[] ]); } public function test1() { return $this->fail('错误',[ 'list'=>[] ]); } }
5. 公共函数库
函数1 function setOptionsColor(string $name, array $options = []): string
/** * 根据指定选项生成一个动态的三元表达式字符串。 * * @param string $name 变量名称,将用于表达式中作为条件变量。 * @param array $options 选项数组,其中键 (`key`) 代表需要与变量匹配的值,值 (`value`) 代表匹配成功时返回的颜色或状态值。 * 颜色格式可以是 'active', 'inactive', 'error', 'success', 'processing', 'warning' 或具体色值。 * 例如: * [ * 'enable' => 'success', * 'disable' => 'error', * ] * @return string 返回构建好的三元表达式字符串,格式为: * ${name=="value1"?"color1":(name=="value2"?"color2":"default")} * 其中,'default' 是当所有条件不匹配时的默认值。 */ function setOptionsColor(string $name, array $options = []): string
使用示例
一般用于状态字段的颜色选择,只需要提供字段名、颜色对照表即可使用
中文名称需要自行在Service完成调整
amis()->TableColumn('state_title', '状态')->type('tag')->static()->set('color',$this->setOptionsColor('state',['enable'=>'success','disable'=>'error']))