juniorfontenele / spatie-nova-tags-field
Nova应用的标签字段
Requires
- php: ^8.0|^7.3
- laravel/nova: ^3.0|^4.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-06 23:21:12 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模型可标记,只需将其添加到
class BlogPost extends \Illuminate\Database\Eloquent\Model { use \Spatie\Tags\HasTags; ... }
接下来,您可以在您的Nova资源中使用
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),
限制标签
默认情况下,标签字段允许您添加无限标签。您可以使用limit()
限制标签。
Tags::make('Tags')->limit($maxNumberOfTags),
使用类型
底层标签包支持标签类型。要使您的标签字段保存特定类型的标签,只需在将字段添加到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(), // ... ]; }
该字段将以选择表单元素的形式呈现。它将被已保存的标签名称填充。
如果您想能够取消选择标签,则可以调用canBeDeselected
方法。
// in your Nova resource public function fields(Request $request) { return [ // ... Tags::make('Tags')->single()->canBeDeselected(), // ... ]; }
使用不同的占位符
您可以使用此处记录的withMeta
方法更改占位符,默认为__('Add tags...')
。
// in your Nova resource public function fields(Request $request) { return [ // ... Tags::make('Categories', 'tags')->withMeta(['placeholder' => 'Add categories...']), // ... ]; }
处理标签
有关如何处理已保存标签的更多信息,请参阅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
变更日志
有关最近更改的更多信息,请参阅 变更日志。
贡献
有关详细信息,请参阅 贡献指南。
安全
如果您发现了关于安全性的错误,请发送邮件到 security@spatie.be,而不是使用问题跟踪器。
致谢
渲染标签的 Vue 组件基于 Adam Wathan 创建的标签 Vue 组件,如他在 出色的高级 Vue 组件设计课程 中展示的那样。
许可证
MIT 许可证 (MIT)。有关更多信息,请参阅 许可证文件。