bernhardh/nova-icon-select

该软件包已被废弃,不再维护。未建议替代软件包。

laravel nova 图标选择字段

1.0.0 2020-12-22 20:10 UTC

This package is auto-updated.

Last update: 2023-06-09 02:08:25 UTC


README

这是一个laravel nova字段,用于从图标集中选择图标。图标集由IconProvider定义,因此您可以定义自己的集。该软件包为FontAwesome 5 Free预定义了一个IconProvider

截图

编辑

Edit

索引

Index

详细信息

Detail

安装

使用composer安装此软件包

composer require bernhardh/nova-icon-select

您需要自己将图标集的样式包含到nova中。一种常见的方法是将它添加到您的resources/views/vendor/nova/partials/meta.blade.php中。

对于FontAwesome,您可以这样做

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.1/css/all.min.css" integrity="sha512-+4zCK9k+qNFUR5X+cKL9EIR+ZOhtIloNl9GIKS57V1MyNsYpYcUrUeQc9vNfzsWfV28IaLL3i96P9sdNyeRssA==" crossorigin="anonymous" />

当然,您也可以在您的服务器上托管图标集,甚至使用完全不同的图标。

用法

像其他字段一样,您可以在您的Nova资源中使用该字段。您需要提供一个IconProvider。您可以使用内置的FontAwesomeIconProvider,或者使用IconProvider的实例,或者创建自己的。

use Bernhardh\NovaIconSelect\NovaIconSelect;

NovaIconSelect::make("Icon", "icon")
    ->setIconProvider(/* Instance or classname of an IconProvider */);

与FontAwesome 5 Free一起使用

对于FontAwesome 5 Free,已经内置了Provider。这样使用它

use Bernhardh\NovaIconSelect\NovaIconSelect;
use Bernhardh\NovaIconSelect\IconProviders\FontAwesomeIconProvider;

NovaIconSelect::make("Icon")
    ->setIconProvider(FontAwesomeIconProvider::class);

如果您想更改标签、删除图标或添加搜索标签,您可以发布配置

php artisan vendor:publish --provider="Bernhardh\NovaIconSelect\FieldServiceProvider"

现在您可以像您喜欢的那样修改config/nova-icon-select/fontawesome.php文件。

与您自己的图标集一起使用

要使用您自己的图标集,您可以选择创建自己的IconProvider类并从Bernhardh\NovaIconSelect\IconProvider扩展它,或者您可以使用Bernhardh\NovaIconSelect\IconProvider作为一个实例并直接添加选项。

使用实例和setOptions

use Bernhardh\NovaIconSelect\NovaIconSelect;
use Bernhardh\NovaIconSelect\IconProvider;

NovaIconSelect::make("Icon")
    ->setIconProvider(IconProvider::make()->setOptions([
        [
            'label' => 'Custom icon 1',
            'value' => 'my-icons-1',
            'search' => ['foo']
        ],
        [
            'label' => 'Custom icon 2',
            'value' => 'my-icons-2',
        ],
        [
            'label' => 'Custom icon 2',
            'value' => 'my-icons-3',
            'search' => ['foo', 'bar']
        ],
    ]));

或者,您当然也可以将选项移动到配置文件中,并通过config()获取它

use Bernhardh\NovaIconSelect\NovaIconSelect;
use Bernhardh\NovaIconSelect\IconProvider;

NovaIconSelect::make("Icon", "icon")
    ->setIconProvider(
        IconProvider::make()->setOptions(config("iconset"))
    );

使用自己的类

use Bernhardh\NovaIconSelect\IconProvider;

class MyCustomIconProvider extends IconProvider {
    
    public function __construct() {
        $this->setOptions([
            [
                'label' => 'Custom icon 1',
                'value' => 'my-icons-1',
                'search' => ['foo']
            ],
            [
                'label' => 'Custom icon 2',
                'value' => 'my-icons-2',
            ],
            [
                'label' => 'Custom icon 2',
                'value' => 'my-icons-3',
                'search' => ['foo', 'bar']
            ],
        ]);
    }
}

现在您可以使用了

use Bernhardh\NovaIconSelect\NovaIconSelect;

NovaIconSelect::make("Icon")
    ->setIconProvider(MyCustomIconProvider::class);

选项

示例

[
    'label' => 'Custom icon 1',
    'value' => 'my-icons-1',
    'search' => ['foo', 'bar']
]

每个选项由这些字段组成

  • label: 必需的字符串。这是在nova中显示的值,此值用于搜索(检查标签是否包含搜索字符串)
  • value: 必需的字符串。这是实际图标类或标识符,将存储到数据库中。对于FontAwesome,这将是类似fas fa-edit的东西
  • search: 可选的字符串数组。此数组用于搜索(检查字符串是否以搜索字符串开头)
  • unicode:可选的字符串。目前未使用

当然,你可以像我对 FontAwesomeIconProvider 所做的那样,将选项移动到配置文件中

变更日志

请参阅 CHANGELOG 以获取更多关于最近更改的信息。