fleader64 / nova-tags-field
Nova应用程序的标签字段
Requires
- php: ^8.0|^7.3
- laravel/nova: ^3.0
- spatie/laravel-tags: ^2.3|^3.0|^4.0
Requires (Dev)
- mockery/mockery: ^1.4
- orchestra/testbench: ^5.0|^6.0
- phpunit/phpunit: ^9.4
This package is auto-updated.
Last update: 2024-09-20 18:08:22 UTC
README
Nova应用程序的标签字段
此包包含一个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)。请参阅许可证文件以获取更多信息。