eleven59/backpack-settings-extended

扩展Backpack设置包,允许对设置进行分类、文件/图片上传、自定义实体名称和自定义排序

2.1.3 2024-08-22 13:49 UTC

This package is auto-updated.

Last update: 2024-09-22 13:59:27 UTC


README

Latest Version on Packagist Total Downloads

backpack/settings的扩展

此包扩展了Backpack for Laravelbackpack/settings

  • 轻松创建多个后端设置页面,以便您可以为用户分类它们
  • 设置列表页面的自定义排序
  • 自定义实体名称(而不是"setting"/"settings")
  • 字段类型的默认选项(例如,自定义ckeditor构建)
  • 为列表或更新操作添加小部件
  • 可翻译设置

安装

依赖项

此包需要

安装

通过Composer

# Install module + dependencies 
composer require eleven59/backpack-settings-extended

# Publish Backpack Settings migration, then run all migrations
php artisan vendor:publish --provider="Backpack\Settings\SettingsServiceProvider" --tags=migrations
php artisan migrate

# Publish Backpack Extended config file
php artisan vendor:publish --provider="Eleven59\BackpackSettingsExtended\AddonServiceProvider"

您现在可以在config/eleven59/backpack-settings-extended.php中找到配置文件

用法

多个设置页面

此包向设置表添加了一个type列。使用此列,您可以创建多个后端设置页面以分类设置。您可以在config文件中按以下方式配置路由

'routes' => [
    'url-slug' => 'type-column-value',
]

如果您在数据库中添加了一条记录,该记录在type列中有"type-column-value",那么如果您的配置文件中有上面的数组,该设置条目将现在自动显示在以下页面上

# All settings (default URL slug can be changed in config):
https://your-site/{backpack-admin-slug}/setting

# Only settings with "type-column-value" as their DB type
https://your-site/{backpack-admin-slug}/url-slug

字段类型的默认选项

您可以使用config/eleven59/backpack-settings-extended.php文件添加字段类型的自定义默认定义,这样您就不必在数据库中输入复杂的内容,有时这些内容甚至不起作用(例如,下面的示例中的ckeditor字段)。

注意:如果主键(即下面的'crop'或'withFiles')在数据库的字段定义中存在,则默认值将被覆盖。只有当数据库中的字段定义中完全缺少整个键时,才会使用默认值。

'field-defaults' => [
    'image' => [
        'crop' => true,
        'withFiles' => [
            'disk' => 'public',
            'path' => 'settings',
        ],
    ],
    'ckeditor' => [
        'custom_build' => [
            resource_path('assets/ckeditor/ckeditor.js'),
            resource_path('assets/ckeditor/ckeditor-init.js'),
        ],
    ],
],

小部件

您可以定义列表和更新操作的小部件(因为实际上也只提供这两种)。这将允许您加载自定义脚本和CSS,这可能会帮助解决一些更复杂的自定义默认列的默认值。

'widgets' => [
    'list' => [],
    'update' => [
        [
            'type' => 'script',
            'content' => 'https://unpkg.com/jquery-colorbox@1.6.4/jquery.colorbox-min.js',
        ],
        [
            'type' => 'style',
            'content' => 'https://unpkg.com/jquery-colorbox@1.6.4/example2/colorbox.css',
        ],
    ],
],

自定义排序

此包向设置表添加了一个position列。默认情况下,列表页面按此列升序排序。您可以在config/eleven59/backpack-settings-extended.php文件中更改此行为

'order-by' => [
    'field' => 'position',
    'order' => 'asc',
],

自定义实体字符串名称

此包允许您更改单数"setting"和复数"settings"的默认实体名称。默认情况下使用backpack/settings字符串。您可以在config/eleven59/backpack-settings-extended.php文件中更改它们的值

'entity-name-strings' => [
    'singular' => 'setting',
    'plural' => 'settings',
],

可翻译

如果您想使用可翻译设置,可以通过启用为此提供的自定义Settings模型来实现

//'model' => \Eleven59\BackpackSettingsExtended\Models\Setting::class, // <-- default
'model' => \Eleven59\BackpackSettingsExtended\Models\SettingWithTranslations::class, // <-- switch to this one

一旦启用,它就会"自动工作",并自动启用您在config/backpack/crud.php设置文件中启用的所有语言。

遗憾的是,由于spatie/translatable的工作方式,此设置不能按实体逐个启用(因为它需要在模型本身上设置静态属性)。因此,要么所有设置都是可翻译的,要么都不是。

变更日志

重大更改将在此处列出。其他更改请参阅提交日志。

V2.1

默认模型已更改为不包含 HasTranslations 特性的模型。这对于已经实施并从 backpack/settings 升级的人来说更好,因为 spatie/translatable 改变了数据在数据库中存储和读取的方式。默认启用将意味着数据丢失,因为在管理员中的所有设置字段都将为空(因为找不到任何翻译)。

然而,自从本包的 v2.0 版本开始,默认模型 确实 包含了翻译。如果您是从 v2.0 版本进行更新,请确保使用如上所述在 可翻译 小节中描述的可翻译模型。

V2.0

  • 现在仅支持 backpack/crud:^6.0 和 backpack/settings:^3.1
  • 因此,现在需要 PHP 8.1+,并且需要 backpack/pro 以支持专业字段。
  • 为翻译添加了对 spatie/laravel-translatable:^6.0 的要求。
  • 移除了对 eleven59/backpack-images-traits 的要求。由于现在可以使用 WithFiles 指令,因此这已经是 Backpack 6.0 中的默认功能。

致谢

许可证

该项目是在 MIT 许可证下发布的,因此您可以在任何 Backpack & Laravel 项目上安装它。有关更多信息,请参阅许可证文件

然而,请注意,您需要安装 Backpack,因此您还需要遵守其YUMMY 许可证。这意味着在生产中您需要一个 Backpack 许可证代码。您可以在 backpackforlaravel.com 上获得非商业使用的免费许可证(或商业使用的付费许可证)。