codicastudio/tags-manager

一个随机的 Codica Studio 包。

1.0.0 2020-09-25 01:50 UTC

This package is auto-updated.

Last update: 2024-09-25 13:48:11 UTC


README

Latest Version on Packagist GitHub Workflow Status Total Downloads

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

screenshot of the tags field

支持我们

通过观看我们的付费视频课程学习如何创建此类包

Laravel Package training

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

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

要求

此 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(Request $request)
    {
        return [
            // ...
            
            Tags::make('Tags'),

            // ...
        ];
    }
}

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

限制建议

默认情况下,在输入时标签字段将显示最多 5 个建议。如果您不想显示任何建议,则使用 withoutSuggestions() 标签。

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

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

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

使用类型

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

// in your Nova resource

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

        // ...
    ];
}

只允许一个标签

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

// in your Nova resource

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

        // ...
    ];
}

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

处理标签

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

在 Nova 中管理标签

如果您要对保存的标签执行 CRUD 操作,只需为它创建一个 Nova 资源即可。以下是一个示例。

namespace App\Nova;

use Illuminate\Http\Request;
use Laravel\Nova\Fields\Text;
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(Request $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

变更日志

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

贡献

请参阅CONTRIBUTING获取详细信息。

安全

如果您发现任何与安全相关的问题,请通过电子邮件maintenance@codicastudio.com联系我们,而不是使用问题跟踪器。

致谢

渲染标签的Vue组件是基于Adam Wathan创建的标签Vue组件,如他在Advanced Vue Component Design课程中所示

许可证

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