digiants-agency / fastadminpanel
快速管理员面板生成器
Requires
- maatwebsite/excel: ^3.1
- mobiledetect/mobiledetectlib: 4.8.06
- unisharp/laravel-filemanager: 2.9.0
This package is auto-updated.
Last update: 2024-09-28 13:58:23 UTC
README
简介
开源免费 FastAdminPanel CRUD 生成器
由 Laravel 和 Vue.js 构建的开放源头无头 CMS,灵活且完全可定制。
FastAdminPanel 是一个免费且开源的多语言无头 CMS,使您能够管理任何内容。
带有关系的多语言 CRUD 生成器(15 种字段类型)+ 模型 + 迁移 + 文档化的 API,静态内容生成器
- 现代管理员面板:优雅、完全可定制且完全可扩展的管理员面板。
- 可定制:您可以通过完全自定义 API、路由或插件来快速构建您的逻辑,以满足您的需求。
- 快速且强大:基于 Laravel 和 Vue.js 构建,FastAdminPanel 提供可靠且稳定的表现。
- 前端无关:您可以使用任何前端框架(React、Next.js、Vue、Angular 等)、移动应用或甚至 IoT。
以下是一些截图。
请随时联系我: sv@digiants.com.ua
入门
⏳ 安装
- 首先安装 Laravel
composer create-project laravel/laravel="11.*" PROJECT_NAME
- 进入文件夹
cd PROJECT_NAME
- 使用 composer 安装 FastAdminPanel 项目
composer require digiants-agency/fastadminpanel
-
在 .env 文件中配置 DB 和 APP_URL
-
运行安装命令
php artisan fastadminpanel:install
- 发布包配置和资产(以下 laravel 文件管理器 安装)
composer require intervention/image-laravel php artisan vendor:publish --tag=lfm_config php artisan vendor:publish --tag=lfm_public
- 在 "config/lfm.php"
change line: ('disk' => 'public',) to ('disk' => 'lfm',)
// add category of folder in folder_categories (48 line)
'admin' => [
'folder_name' => 'vendor/fastadminpanel/icons',
'startup_view' => 'list',
'max_size' => 50000, // size in KB
'valid_mime' => [
'image/jpeg',
'image/pjpeg',
'image/png',
'image/gif',
'image/svg+xml',
'application/pdf',
'text/plain',
],
],
- 添加磁盘 "config/filesystems.php"
// add this config beginning from the line 44:
'lfm' => [
'driver' => 'local',
'root' => public_path(),
'url' => env('APP_URL'),
'visibility' => 'public',
],
享受 🎉
概念
- 您可以使用此包生成 CRUD。该包还自动创建带有关系和迁移的模型文件(在更新或删除 CRUD 时也会添加)。
- 下拉列表、权限和 CRUD 的数据存储在 json 文件中,路径 = "/storage/app/ENTITY.json"(因此这些信息将出现在 git 上)。
- 您有能力创建“单个”实体来管理静态内容。
- 管理员面板完全支持多语言。CRUD 多语言表示为不同语言中的相同表,例如 post_en、post_de。此方法 反规范化 数据库(增加占用的空间量),但使管理变得非常简单。多语言模型非常简单,由 MultilanguageModel 类表示。
- 管理员面板是无需使用 npm 或其他类似技术编写的,允许在不重新组装的情况下进行编辑。
CRUD 生成器的使用
- 转到 https://yourdomain.com/admin/cruds
- 填写字段
- CRUD 名称 - 数据库的表名
- CRUD 标题 - 菜单的标题
- 是否开发者 - 隐藏 CRUD 从菜单中的选项(见更多 打开开发者菜单)
- 多语言 - 启用多语言的选项(见更多 多语言)
- 显示文档 - 在自动生成的文档中显示此 CRUD 的选项(更多请参阅 文档)
- 显示统计信息 - 在仪表板中显示此 CRUD 的选项
- 模型 - 自动生成(创建时无需填写)的模型路径。如果您更改了生成模型的路径,则必须更改此字段
- 默认排序 - 实体列表中设置默认排序顺序的数据库字段标题
- 排序 - 菜单中的排序顺序
- 下拉菜单 - 设置父级菜单项(更多请参阅 下拉菜单)
- 图标 - 设置菜单的图标
- 字段 - 出现在您的 CRUD 中的字段集合(15 种字段类型)
- 点击“创建”按钮
- 现在您可以在其中创建控制器并使用生成的模型。或者您可以直接访问 /fapi/{crud_slug}
注意事项
- 所有 CRUD 的数据都存储在 /storage/app/cruds.json 中(因此这些信息将出现在 git 上)
- 如果您想将生成的模型从默认文件夹移动出来 - 您需要正确编辑 CRUD 中的 模型字段。
- 如果您在更改 CRUD 时 不 想自动编辑模型 - 您只需在 CRUD 中移除 模型字段(但这将破坏 /fapi/{model}/{id})。
- 要为自动 API 添加 权限,您需要转到 /admin/settings
- 在 /config/fap.php 中有一个选项 - "migrations_mode"。它决定了管理员面板如何处理迁移
- "dev"
- 如果您删除 CRUD - 旧迁移将被删除
- 如果您更新 CRUD - 旧迁移将被覆盖
- "prod"
- 如果您删除 CRUD - 将添加新迁移
- 如果您更新 CRUD - 将添加新迁移
- "dev"
下面是示例
- 创建
- 列表
- 编辑
静态内容生成器的使用
- 转到 https://yourdomain.com/admin/singles
- 填写字段
- 单条名称 - API 的内部 ID 和在代码中的使用
- 单条标题 - 菜单标题
- 排序 - 排序顺序
- 下拉菜单 - 父级菜单项(更多请参阅 下拉菜单)
- 图标 - 菜单图标
- 点击“创建”按钮
- 现在您可以在代码中使用它,如下所示
use Single; Single::get('your_slug_here');
- 或者您可以直接访问 /fapi/singles/{your_slug_here}。不要忘记 权限
下面是示例
- 创建
- 编辑
自动文档
所有“显示文档”为“是”的 CRUD 创建都会显示在文档中。此外,所有静态内容“单条”也会显示在文档中。
-
文档可以在 https://yourdomain.com/admin/docs 中查看。
-
如果您想添加自己的文档,请转到 /app/FastAdminPanel/Controllers/DocsController.php。那里已经有了一个如何编写的示例
下面是文档的示例
下拉菜单
您可以为您创建的单条和 CRUD 添加父级菜单项。
-
添加下拉菜单
-
转到 CRUD 或单条(静态内容生成器)并添加父级
下面是下拉菜单的示例
多语言
-
管理员面板完全支持多语言。CRUD 多语言表示为不同语言中的相同表,例如 post_en、post_de。此方法 反规范化 数据库(增加占用的空间量),但使管理变得非常简单。多语言模型非常简单,由 MultilanguageModel 类表示。
-
要使自定义模型多语言化 - 只需继承 App\FastAdminPanel\Models\MultilanguageModel 类。
-
在 CRUD 中有一个“多语言”下拉菜单,可以使其成为多语言。
-
每个字段都有一个“Lang”列,使其支持多语言。如果Lang == “common”,则在保存字段时,值将在所有表中更新(例如 posts_en、posts_de、posts_fr)。如果Lang == “separate”,则在保存字段时,值仅将在当前语言表中更新(例如 posts_en)。
-
您可以在 https://yourdomain.com/admin/settings 编辑语言。
-
管理面板的语言在User表的“admin_lang_tag”列中表示。
-
存在一个名为Lang的类。它有几个有用的方法
use Lang;
Lang::count(); // languages count
Lang::all(); // get all languages
Lang::get(); // get current language tag
Lang::is($langTag); // check language tag
Lang::main(); // get main language tag
...
如何使用
打开开发者菜单
-
默认情况下,权限、语言、CRUD、单选和下拉内部设置是隐藏的。
-
如果.env文件中APP_DEBUG=true,则显示所有隐藏菜单项。
-
您还可以隐藏CRUDs("Is dev"选项)。
-
要显示隐藏菜单项,您需要在地址中添加"?dev=",例如: https://yourdomain.com/admin?dev=。
-
要更改查询参数,请访问:/config/fap.php
更改权限
-
每个角色都有一个“Is admin”选项,允许角色登录管理面板。
-
前往 https://yourdomain.com/admin/settings 修改角色权限。
-
警告:小心使用关系。有人可以使用带有关系的GET方法(且该关系将不会检查权限)。
-
超级管理员角色是:Entities = all,All = true。
添加自定义页面
-
下面的例子存在,但它已被注释掉(https://github.com/digiants-agency/fastadminpanel/commit/5d6f2eb4bab58cebe1ddfc9a4a66f7e18e95a51b)。
-
创建Vue组件。例如
/views/fastadminpanel/pages/admin/pages/custom.blade.php
- 将您的页面包含在app中。app在这里
/views/fastadminpanel/layouts/app.blade.php
- 在仪表板之后放置您的包含项
@include('fastadminpanel.pages.admin.pages.dashboard')
@include('fastadminpanel.pages.admin.pages.custom')
- 在仪表板之后在app中添加Vue路由
{
path: '',
name: 'home',
component: dashboardPage,
},
{
path: 'custom',
name: 'custom',
component: customPage,
},
- 在侧边栏中添加菜单项(在菜单v-for之后)。侧边栏在这里
/views/fastadminpanel/pages/admin/parts/sidebar.blade.php
覆盖字段模板
- 按照此规则创建您的字段,并将其相应应用
/views/fastadminpanel/pages/admin/fields/custom/FIELD_TYPE-TABLE_NAME-DB_TITLE.blade.php
-
FIELD_TYPE - 字段的类型,例如:ckeditor、日期等。
-
TABLE_NAME - CRUD表的名称(放置“all”表示所有表)
-
DB_TITLE - 字段在数据库中的标题(放置“all”表示所有字段)
“custom”文件夹中已存在一些示例。
覆盖 CRUD 服务
-
添加您自己的CRUD服务以覆盖一些方法:index、show、store、update、copy、destroy。
-
已存在一个此类服务作为示例。
-
在这里创建您的服务
/app/FastAdminPanel/Services/Crud/Entity/Custom/YOUR_SERVICE_NAME.php
- 将您的服务添加到provider
/app/FastAdminPanel/Providers/FastAdminPanelServiceProvider.php
- 这里
protected $crudCustomServices = [
// example
'products' => [
// methods: index, show, store, update, copy, destroy
'show' => \App\FastAdminPanel\Services\Crud\Entity\Custom\ShowProductsService::class,
],
];
- 上面的例子显示了覆盖“products”表的“show”方法。