outl1ne/nova-settings

A Laravel Nova 工具,用于使用原生 Nova 字段编辑自定义设置。

资助包维护!
outl1ne

安装: 396,112

依赖者: 1

建议者: 0

安全: 0

星级: 274

观察者: 7

分支: 96

开放问题: 13

5.2.4 2024-03-07 11:23 UTC

README

Latest Version on Packagist Total Downloads

Laravel Nova 包允许你在代码中创建自定义设置(使用 Nova 的原生字段),并为用户提供一个用户界面,其中可以编辑设置。

要求

  • php: >=8.0
  • laravel/nova: ^4.26

特性

  • 代码中的设置字段管理
  • 编辑设置的 UI
  • 访问设置的辅助函数
  • 规则验证支持

屏幕截图

Settings View

安装

通过 Composer 在 Laravel Nova 项目中安装包并运行迁移

# Install nova-settings
composer require outl1ne/nova-settings

# Run migrations
php artisan migrate

NovaServiceProvidertools() 方法中注册工具

// in app/Providers/NovaServiceProvider.php

public function tools()
{
    return [
        // ...
        new \Outl1ne\NovaSettings\NovaSettings
    ];
}

用法

注册字段

通过调用 NovaSettings::addSettingsFields()NovaServiceProviderboot() 函数中定义字段。

// Using an array
\Outl1ne\NovaSettings\NovaSettings::addSettingsFields([
    Text::make('Some setting', 'some_setting'),
    Number::make('A number', 'a_number'),
]);

// OR

// Using a callable
\Outl1ne\NovaSettings\NovaSettings::addSettingsFields(function() {
  return [
    Text::make('Some setting', 'some_setting'),
    Number::make('A number', 'a_number'),
  ];
});

注册字段面板

// Using an array
\Outl1ne\NovaSettings\NovaSettings::addSettingsFields([
    Panel::make('Panel Title', [
      Text::make('Some setting', 'some_setting'),
      Number::make('A number', 'a_number'),
    ]),
]);

转换

如果你想格式化设置值再返回,可以将类似于 Eloquent$casts 属性的数组作为第二个参数传递。

\Outl1ne\NovaSettings\NovaSettings::addSettingsFields([
    // ... fields
], [
  'some_boolean_value' => 'boolean',
  'some_float' => 'float',
  'some_collection' => 'collection',
  // ...
]);

子页面

将设置页面名称作为第三个参数添加到自定义子页面中列出这些设置。

\Outl1ne\NovaSettings\NovaSettings::addSettingsFields([
    Text::make('Some setting', 'some_setting'),
    Number::make('A number', 'a_number'),
], [], 'Subpage');

如果你留空自定义名称,字段将列出在“常规”下。

要翻译页面名称,发布翻译并将新键 novaSettings.$subpage 添加到相应的翻译文件中,其中 $subpage 是页面的名称(全部小写,短横线化)。

授权

显示/隐藏所有设置

如果你想从侧边栏中隐藏整个 Settings 区域,可以像这样授权 NovaSettings 工具

public function tools(): array
{
    return [
        NovaSettings::make()->canSee(fn () => user()->isAdmin()),
    ];
}

显示/隐藏特定设置字段

如果你想隐藏某些设置,可以使用 ->canSee(fn () => ...) 每个字段。如下所示

Text::make('A text field')
  ->canSee(fn () => user()->isAdmin()),

辅助函数

nova_get_settings($keys = null, $defaults = [])

调用 nova_get_settings() 获取所有设置为常规数组格式。此外,您还可以作为第二个参数传递一个 key => value 数组:nova_get_settings(['some_key], ['some_key' => 'default_value'])

nova_get_setting($key, $default = null)

要获取单个设置的值,调用 nova_get_setting('some_setting_key')。它将返回值或 null,如果没有找到具有该键的设置。

您还可以将默认值作为第二个参数传递 nova_get_setting('some_setting_key', 'default_value'),如果没有找到给定键的设置,则将返回该值。

nova_set_setting_value($key, $value = null)

为给定键设置设置值。

配置

可以使用以下命令发布配置文件

php artisan vendor:publish --provider="Outl1ne\NovaSettings\NovaSettingsServiceProvider" --tag="config"

迁移也可以使用以下命令发布和覆盖

php artisan vendor:publish --provider="Outl1ne\NovaSettings\NovaSettingsServiceProvider" --tag="migrations"

本地化

可以使用以下命令发布翻译文件

php artisan vendor:publish --provider="Outl1ne\NovaSettings\NovaSettingsServiceProvider" --tag="translations"

您可以将您的翻译添加到 resources/lang/vendor/nova-settings/ 中,通过创建一个新的翻译文件,使用区域名称(例如 et.json)并复制现有的 en.json 中的 JSON。

鸣谢

许可

Nova Settings 是开源软件,许可协议为 MIT 许可证