7ute/directavel

使用 Directus 作为 Laravel 的后台管理工具

v1.0.2 2023-06-12 06:45 UTC

This package is auto-updated.

Last update: 2024-09-12 11:05:28 UTC


README

Directavel 帮助使用 Directus 作为 Laravel 的管理后端。它提供了一些命令,可以编程定义和版本控制 Directus 集合,并同步它们而无需修改您的数据表。

Tests Software License Latest Version

安装

Directavel 需要 PHP 8.0+、Laravel 10.x+ 和 Directus 9.x+。要获取最新版本,只需使用 Composer 需求项目即可。

composer require 7ute/directavel

安装完成后,如果您没有使用自动包发现,则需要将 SevenUte\Directavel\DirectavelServiceProvider 服务提供者在您的 config/app.php 文件中注册。您还可以为外观指定别名

        'Directavel' => SevenUte\Directavel\Facades\Directavel::class,

Directus 必须安装并引导,并且迁移必须已经运行。您可以通过在 directus 项目目录中 运行以下命令来引导它

npx directus bootstrap
npx directus database migrate:latest

配置

为了自定义 directus 配置,您首先必须发布配置。

$ php artisan vendor:publish

这将在您的应用中创建一个 config/directavel.php 文件,您可以根据需要修改它来设置配置。请确保检查此包中原始配置文件在版本之间的更改。

集合

每个集合都由一个名为我们想要配置的表的 PHP 文件定义。集合位于 directavel.collections_path_pattern 配置条目中设置的路径。

配置文件如下所示

// database/directus/collections/some_table.php

/**
 * That file will help generating a `some_table`
 * entry in the `directus_collections` table
 * with only the collection column filled.
 **/
return [
    /** The other columns of this `directus_collection` entry. */
    'attributes' => [],

    /** Each field will be its own row in the `directus_fields` table */
    'fields' => [],

    /**
     * The relationships that are not set in the fields
     * can be defined here. They will be inserted at
     * the end of the `directus_relations` table.
     **/
    'relations' => [],
]

要查看示例,请查看此包中的 sample.php 文件。您还可以参考 DirectusFields 模型以获取可用字段列表以及一些为您的 IDE 提供的类型,以及 DirectusCollectionsDirectusRelations 以获取可用列。

预设

一般预设可以在 directavel.presets_path 配置条目中设置的路径的文件中定义。此项目的 presets.php 文件中包含了对 directus_activitydirectus_presetsdirectus_users 视图的默认配置。

使用方法

一旦配置了集合,您就可以在迁移中使用外观,或者使用命令触发 Directus 集合/字段的全量刷新,而不会触及您的非 Directus 数据表。

警告 根据您在配置文件中的设置,您可能需要删除现有的活动集合、字段、预设、关系和修订。

命令

  • php artisan directavel:sync:更新管理员用户、设置和预设,并同步集合和字段
  • php artisan directavel:cache:clear:清除 Directus 内部缓存

外观

use SevenUte\Directavel\Facades\Directavel;

Directavel::updateProjectAdmin()
    ->updateProjectPresets()
    ->updateThemeCss()
    ->synchronizeDatabase()
    ->clearCache();
  • updateProjectAdmin:更新 Directus 管理员用户
  • updateProjectLog:更新 Directus 徽标
  • updateProjectPresets:从在 directus.presets_path 配置中定义的文件中重新加载非用户预设
  • updateThemeCss:应用主题颜色和额外 CSS
  • 同步数据库:将集合、字段和关系加载到Directus表中,在之前设置在directus.wipe配置中的内容将被清除;
  • 清除缓存:清除Directus集合缓存,以防止出现“不存在的字段”错误;
  • 加载Tailwind主题颜色:重新加载Tailwind主题颜色;
  • 加载当前管理员ID:重新加载Directus管理员用户ID。

测试

此包使用Pest进行测试。要运行测试,请使用composer tests

贡献

欢迎提交拉取请求。带有测试的拉取请求更是受欢迎。

安全

如果您在此包中发现安全漏洞,请向Julien Cauvin发送电子邮件至contact@7ute.fr。所有安全漏洞都将得到及时处理。

许可证

Directavel遵循MIT许可证(MIT)