eleven59 / backpack-settings-extended
扩展Backpack设置包,允许对设置进行分类、文件/图片上传、自定义实体名称和自定义排序
Requires
- backpack/crud: ^6.0
- backpack/settings: ^3.0
- spatie/laravel-translatable: ^6.0
README
对backpack/settings
的扩展
此包扩展了Backpack for Laravel
的backpack/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 上获得非商业使用的免费许可证(或商业使用的付费许可证)。