aecodes / admin-panel
一个简单且与框架无关的管理面板
dev-master
2020-11-21 16:38 UTC
Requires
- php: ^7.2
- ext-json: *
Requires (Dev)
- phpunit/phpunit: ^8
This package is auto-updated.
Last update: 2024-09-22 01:01:13 UTC
README
框架无关的管理面板。
目标
尽量使其尽可能简洁。它允许您创建具有不同类型(表格、表单)的多个页面,而不会过多干预您的代码库。
ps:您仍然需要设置您的路由、身份验证等...
响应
我们允许多种类型的响应,默认情况下我们使用 PHP 视图,但考虑到 Laravel 用户为例,我们会使用 blade
,因此一个可能的解决方案是创建一个不同的 Renderer
。
目前我们有两种默认的 Renderer
DefaultRenderer
这仅返回一个数组作为输出JsonRenderer
这返回 JSON 输出
要创建一个 Renderer,让它扩展 Aecodes\AdminPanel\Responses\Renderer
,然后将它添加到配置中。
目前支持的布局
- 表格(接受 TD 数组,每个 TD 都可以自定义渲染)
- 表单(接受字段数组)
- Div(唯一的用例是自定义包装器)
- 您可以创建自己的小部件。
ps:小部件实现 Widget
接口。
目前支持的表单字段
- 输入(文本、密码、电子邮件、数字等)
- 单选按钮
- 下拉列表
- 文本区域
- 复选框
- 图片(上传单个图片)
如何设置
- 使用 Composer 安装
- 使用
config/panel.php
作为起点创建一个配置文件。 - 创建(单例)
Dashboard
类的实例,确保将配置作为数组传递。
$config = require './config/panel.php'; Aecodes\AdminPanel\Dashboard::setup($config);
如何创建管理页面
- 创建一个新的类,扩展
Panel
类 - 为了方便,设置面板的
$name
和$description
属性(显示在页面上)。 - 创建一个返回数据数组的
query
方法。
function query(): array { // get data from database. return Page::all()->toArray(); }
- 创建一个返回小部件数组的
render
方法。
- 要创建表格
function render(): array { return [ Table::make([ // (label, name) both are optional TD::make('#', 'id'), // it's also possible to use Table::column Table::column('Title', 'title'), ]) // ... ]; }
- 要创建表单
function render(): array { return [ Form::make([ Input::make('title')->title('Title'), // form submit Action::button('Save'), ]) ->action('#') ->method('post'), // ... ]; }
- 最后,在路由的回调中,只需返回您创建的类的实例即可。
// callback for some route public function index() { // PagesTable extends Panel return (new Response(new PagesTable))->render(); }
可扩展性
布局
在扩展 Panel
类时,您可以指定 $layout
属性。
视图
该软件不包含视图层。您可以使用默认的(很快)视图包。
配置
默认配置是
return [ // current renderer. 'renderer' => 'default', // add new renderer here. 'renderers' => [ 'json' => Aecodes\AdminPanel\Responses\JsonRenderer::class, 'default' => Aecodes\AdminPanel\Responses\DefaultRenderer::class, ], // default classes for button and a tag. 'classes' => [ 'link' => '', 'button' => '', ], // global menus, can be and array or callback 'menu' => function () { return []; }, // input old value. 'old_value' => function ($name, $default) { return $default; }, // global errors (i.e: validation errors) 'errors' => function () { return []; } ];