flagstudio / nova-sluggable
Laravel Nova 的 Slug 字段
Requires
- php: >=7.1.0
- illuminate/http: 5.6.*|5.7.*|5.8.*|6.*|7.*|8.*|9.*|10.*|11.*
- illuminate/support: 5.6.*|5.7.*|5.8.*|6.*|7.*|8.*|9.*|10.*|11.*
This package is not auto-updated.
Last update: 2024-09-26 08:06:00 UTC
README
为 Laravel Nova 生成的 Slug 字段,在输入时可以生成唯一的 slug。
安装
您可以通过 composer 在使用 Nova 的 Laravel 应用中安装此包
composer require drobee/nova-sluggable
用法
向您的 Nova 资源添加一个新的 SluggableText
和一个 Slug
字段
use Drobee\NovaSluggable\SluggableText; use Drobee\NovaSluggable\Slug; class User extends Resource { // ... public function fields(Request $request) { return [ // ... SluggableText::make('Title'), Slug::make('Slug'), // ... ]; } }
当用户在 SluggableText
字段中输入字符串时,值将被发送到 API 生成 slug,然后将其设置为 Slug
字段的值。slug 在每次 keyup
事件时更新,但也可以绑定到标题字段的 blur
事件。
默认情况下,它寻找名为 "Slug" 的 Slug
类型字段。
为了正常工作,每个定义的 SluggableText
字段都需要一个相应的 Slug
字段。
选项
具有自定义名称的 Slug 字段
使用 slug()
方法在 SluggableText
字段上设置 Slug
字段的名称
SluggableText::make('Title')->slug('SEO Title'); Slug::make('SEO Title', 'slug');
语言
使用 slugLanguage()
方法设置用于生成的语言
Slug::make('Slug')->slugLanguage('hu');
默认值: en
最大长度
使用 slugMaxLength()
方法限制生成的 slug 的最大长度
Slug::make('Slug')->slugMaxLength(100);
默认值: 255
最大长度
使用 slugSeparator()
方法设置所有空格将被替换成的字符串
Slug::make('Slug')->slugSeparator('.');
默认值: -
注意:由于添加了使它唯一的后缀,生成的 slug 可能会比指定的值长几个字符。
更新事件
默认情况下,slug 在每次 keyup
事件时更新,但您可以将它绑定到 blur
事件
Slug::make('Slug')->event('blur');
接受值: keyup
, blur
默认值: keyup
唯一 slug 和 Eloquent 模型
除非您在 Slug
字段上调用 slugUnique()
方法,否则生成的 slugs 不会是唯一的。
您还需要指定生成器应使用哪个 Eloquent 模型来生成唯一的 slug,通过调用 slugModel()
方法。在大多数情况下,您希望使用与您的资源相同的 Eloquent 模型。要做到这一点,请使用资源的静态 $model
属性调用该方法。
Slug::make('Slug') ->slugUnique() ->slugModel(static::$model);
当这两个选项被设置时,生成的 slug 将在设置的模型及其 Slug
字段属性值的基础上是唯一的。
与 Spatie\Sluggable 一起使用
如果指定的 Eloquent 模型使用 Spatie\Sluggable
的 HasSlug
特性并实现了其 getSlugOptions()
方法,则无需设置分隔符、最大长度或语言。在这种情况下,生成器将使用您在模型上设置的值。
变更日志
请参阅 CHANGELOG 了解最近更改的更多信息。
安全
如果您发现任何安全相关的问题,请通过电子邮件 robi@dpb.hu 而不是使用问题跟踪器。
致谢
许可
MIT 许可证 (MIT)。请参阅 许可文件 了解更多信息。
鸣谢
特别感谢