digiants-agency/fastadminpanel

快速管理员面板生成器

v2.0.9 2024-09-28 13:57 UTC

README

简介

开源免费 FastAdminPanel CRUD 生成器

由 Laravel 和 Vue.js 构建的开放源头无头 CMS,灵活且完全可定制。


Latest Stable Version


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
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 - 将添加新迁移

下面是示例

  • 创建

crudEditImage

  • 列表

crudListImage

  • 编辑

crudEntityImage

静态内容生成器的使用

  • 转到 https://yourdomain.com/admin/singles
  • 填写字段
    • 单条名称 - API 的内部 ID 和在代码中的使用
    • 单条标题 - 菜单标题
    • 排序 - 排序顺序
    • 下拉菜单 - 父级菜单项(更多请参阅 下拉菜单
    • 图标 - 菜单图标
  • 点击“创建”按钮
  • 现在您可以在代码中使用它,如下所示
use Single;

Single::get('your_slug_here');
  • 或者您可以直接访问 /fapi/singles/{your_slug_here}。不要忘记 权限

下面是示例

  • 创建

singleCreateImage

  • 编辑

singleEditImage

自动文档

所有“显示文档”为“是”的 CRUD 创建都会显示在文档中。此外,所有静态内容“单条”也会显示在文档中。

  • 文档可以在 https://yourdomain.com/admin/docs 中查看。

  • 如果您想添加自己的文档,请转到 /app/FastAdminPanel/Controllers/DocsController.php。那里已经有了一个如何编写的示例

下面是文档的示例

imageDocs

下拉菜单

您可以为您创建的单条和 CRUD 添加父级菜单项。

下面是下拉菜单的示例

imageDropdown

多语言

  • 管理员面板完全支持多语言。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

更改权限

  • 前往 https://yourdomain.com/admin/cruds/roles 添加角色。

  • 每个角色都有一个“Is admin”选项,允许角色登录管理面板。

  • 前往 https://yourdomain.com/admin/settings 修改角色权限。

  • 警告:小心使用关系。有人可以使用带有关系的GET方法(且该关系将不会检查权限)。

  • 超级管理员角色是:Entities = all,All = true。

添加自定义页面

/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”方法。