dkvhin/nova-settings

一个用于使用原生Nova字段编辑自定义设置的Laravel Nova工具。这是从optimistdigital/nova-settings分支出来的

维护者

详细信息

github.com/dkvhin/nova-settings

来源

资助包维护!
optimistdigital

4.0.0 2020-12-07 04:16 UTC

README

注意!这是从https://github.com/optimistdigital/nova-settings分支出来的

我已经修改了它,使其成为基于用户的设置,而不是全局设置

Latest Version on Packagist Total Downloads

这个Laravel Nova包允许您在代码中创建自定义设置(使用Nova的本地字段),并为用户创建一个可以编辑设置的UI。

要求

  • php: >=7.2
  • laravel/nova: ^3.0

功能

截图

Settings View

安装

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

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

# Publish Config
php artisan vendor:publish --provider="OptimistDigital\NovaSettings\NovaSettingsServiceProvider" --tag="config"

# Publish Migrations
php artisan vendor:publish --provider="OptimistDigital\NovaSettings\NovaSettingsServiceProvider" --tag="migrations"

# Run migrations
php artisan migrate

在Nova的tools()方法中注册工具

// in app/Providers/NovaServiceProvider.php

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

用法

注册字段

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

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

// OR

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

类型转换

如果您想格式化设置值然后再返回,请传递一个类似于Eloquent的$casts属性数组的第二个参数。

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

子页面

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

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

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

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

授权

显示/隐藏所有设置

如果您想从侧边栏中隐藏整个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)

通过调用nova_get_settings()获取所有设置为常规数组格式。如果传入$keys数组,则只返回列出的键。

nova_get_setting($key, $default = null)

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

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

配置

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

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

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

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

本地化

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

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

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

致谢

许可

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