spatie/nova-tags-field

Nova应用的标签字段

安装次数: 1,370,661

依赖者: 10

建议者: 0

安全: 0

星标: 304

关注者: 7

分支: 104

语言:Vue

4.0.8 2024-05-01 09:48 UTC

README

Nova应用的标签字段

Latest Version on Packagist GitHub Workflow Status Total Downloads

此包包含一个Nova字段,用于为资源添加标签。底层使用spatie/laravel-tags包。

支持我们

我们投入了大量资源来创建一流的开源包。您可以通过购买我们的付费产品之一来支持我们。

我们非常感谢您从您的家乡寄来明信片,并提到您正在使用我们哪些包。您可以在我们的联系页面找到我们的地址。我们在我们的虚拟明信片墙上发布所有收到的明信片。

需求

此Nova字段需要MySQL 5.7.8或更高版本。

安装

首先,您必须将spatie/laravel-tags安装到您的Laravel应用中。以下是该包的安装说明

接下来,您可以通过composer将此包安装到使用Nova的Laravel应用中

composer require spatie/nova-tags-field

使用

要使Eloquent模型可标记,只需将其添加到\Spatie\Tags\HasTags特质中

class BlogPost extends \Illuminate\Database\Eloquent\Model
{
    use \Spatie\Tags\HasTags;
    
    ...
}

接下来,您可以在您的Nova资源中使用Spatie\TagsField\Tags字段

namespace App\Nova;

use Spatie\TagsField\Tags;

class BlogPost extends Resource
{
    // ...
    
    public function fields(NovaRequest $request)
    {
        return [
            // ...
            
            Tags::make('Tags'),

            // ...
        ];
    }
}

现在,您可以在Nova应用中的博客文章屏幕上查看和添加标签。所有标签都将保存在tags表中。

限制建议

默认情况下,当在标签字段中键入时,将显示最多5个建议。如果您不想显示任何建议,请将withoutSuggestions()作为标签。

Tags::make('Tags')->withoutSuggestions(),

您可以使用limitSuggestions()更改建议的数量。

Tags::make('Tags')->limitSuggestions($maxNumberOfSuggestions),

限制标签

默认情况下,标签字段将允许您添加无限数量的标签。您可以使用limit()限制标签。

Tags::make('Tags')->limit($maxNumberOfTags),

使用类型

底层标签包支持标签类型。要使您的标签字段保存特定类型的标签,只需在将字段添加到您的Nova资源时附加类型的名称。

// in your Nova resource

public function fields(NovaRequest $request)
{
    return [
        // ...
        
        Tags::make('Tags')->type('my-special-type'),

        // ...
    ];
}

仅允许一个标签

如果用户只能为您的资源选择一个标签,则可以调用single方法。

// in your Nova resource

public function fields(NovaRequest $request)
{
    return [
        // ...
        
        Tags::make('Tags')->single(),

        // ...
    ];
}

该字段将呈现为选择表单元素。它将由已保存的标签名称填充。

如果您想能够取消选择标签,则可以调用canBeDeselected方法。

// in your Nova resource

public function fields(NovaRequest $request)
{
    return [
        // ...
        
        Tags::make('Tags')->single()->canBeDeselected(),

        // ...
    ];
}

使用不同的占位符

您可以使用此处记录的withMeta方法更改占位符,默认为__('Add tags...')

// in your Nova resource

public function fields(NovaRequest $request)
{
    return [
        // ...
        
        Tags::make('Categories', 'tags')->withMeta(['placeholder' => 'Add categories...']),

        // ...
    ];
}

处理标签

有关如何处理已保存标签的更多信息,请参阅spatie/laravel-tags的文档

在Nova中管理标签

如果您想对保存标签执行 CRUD 操作,只需为它创建一个 Nova 资源。这里有一个例子。

namespace App\Nova;

use Laravel\Nova\Fields\Text;
use Laravel\Nova\Http\Requests\NovaRequest;
use Spatie\Tags\Tag as TagModel;

class Tag extends Resource
{
    public static $model = TagModel::class;

    public static $title = 'name';

    public static $search = [
        'name',
    ];

    public function fields(NovaRequest $request)
    {
        return [
            Text::make('Name')->sortable(),
        ];
    }
}

显示带有指向 Nova 资源链接的标签

创建字段时,您可以使用 withLinkToTagResource 方法。
示例

Tags::make('Tags')->withLinkToTagResource() // The resource App\Nova\Tag will be used
Tags::make('Tags')->withLinkToTagResource(\Custom\CustomTag::class) // The resource \Custom\CustomTag will be used

测试

composer test

变更日志

有关最近更改的更多信息,请参阅 变更日志

贡献

有关详细信息,请参阅 贡献指南

安全

如果您发现有关安全性的错误,请发送邮件至 [email protected],而不是使用问题跟踪器。

鸣谢

渲染标签的 Vue 组件基于 Adam Wathan 创建的标签 Vue 组件,如他在 高级 Vue 组件设计课程 中所展示。

许可证

MIT 许可证 (MIT)。有关更多信息,请参阅 许可证文件