spatie / nova-tags-field
Nova应用的标签字段
Requires
- php: ^8.0
- laravel/nova: ^4.13
- nova-kit/nova-packages-tool: ^1.2
- spatie/laravel-tags: ^4.0
Requires (Dev)
- mockery/mockery: ^1.4
- orchestra/testbench: ^6.24|^7.0
- phpunit/phpunit: ^9.4
This package is auto-updated.
Last update: 2024-08-31 00:26:58 UTC
README
Nova应用的标签字段
此包包含一个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)。有关更多信息,请参阅 许可证文件。