fleader64/nova-tags-field

Nova应用程序的标签字段

3.4.0 2021-10-04 06:25 UTC

README

Nova应用程序的标签字段

Latest Version on Packagist GitHub Workflow Status Total Downloads

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

支持我们

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

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

要求

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

安装

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

接下来,您可以通过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

更新日志

请参阅更新日志以获取有关最近更改的更多信息。

贡献

请参阅贡献指南以获取详细信息。

安全

如果您发现与安全相关的错误,请通过security@spatie.be发送邮件,而不是使用问题跟踪器。

鸣谢

渲染标签的Vue组件基于Adam Wathan创建的标签Vue组件,如他的优秀Vue组件设计课程所示。

许可证

MIT许可证(MIT)。请参阅许可证文件以获取更多信息。