saber13812002 / nova-tags-field
Nova 应用程序的标签字段
Requires
- php: ^8.0
- saber13812002/laravel-nova: ^4.0
- saber13812002/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
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 中管理标签
如果您想对保存的标签执行 crm 操作,只需为它创建一个 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)。有关更多信息,请参阅 许可证文件。