jeffersonsimaogoncalves/nova-sluggable

Laravel Nova 的缩略字段

v2.0.0 2022-11-22 17:26 UTC

This package is auto-updated.

Last update: 2024-09-22 21:44:40 UTC


README

Latest Version on Packagist

Laravel Nova 的缩略字段,可以在输入时生成唯一的缩略字段。

nova-sluggable demo

安装

您可以使用 composer 将此软件包安装到使用 Nova 的 Laravel 应用中

composer require jeffersonsimaogoncalves/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 字段的值。缩略字段在每个 key up 事件时更新,但也可以将其与标题字段的 blur 事件相关联。

默认情况下,它会查找名为 Slug 的 Slug 类型字段。

为了正常工作,每个定义的 SluggableText 字段都需要一个对应的 Slug 字段。

选项

具有自定义名称的缩略字段

使用 slug() 方法在 SluggableText 字段上设置 Slug 字段的名称

SluggableText::make('Title')->slug('SEO Title');
Slug::make('SEO Title', 'slug');

语言

使用 Slug 字段的 slugLanguage() 方法设置用于生成的语言

Slug::make('Slug')->slugLanguage('hu');

默认值: en

最大长度

使用 Slug 字段的 slugMaxLength() 方法限制生成的缩略字段的最大长度

Slug::make('Slug')->slugMaxLength(100);

默认值: 255

最大长度

使用 Slug 字段的 slugSeparator() 方法设置所有空格将被替换的字符串

Slug::make('Slug')->slugSeparator('.');

默认值: -

注意:由于添加了后缀以使其唯一,生成的缩略字段可能比指定的值长几个字符。

更新事件

默认情况下,缩略字段在每个 keyup 事件时更新,但您可以将它绑定到 blur 事件

Slug::make('Slug')->event('blur');

接受值: keyupblur

默认值: keyup

唯一缩略字段和 Eloquent 模型

除非您在 Slug 字段上调用 slugUnique() 方法,否则生成的缩略字段不会是唯一的。

您还需要指定生成器应使用哪个 Eloquent 模型来使缩略字段唯一,通过调用 slugModel() 方法。在大多数情况下,您希望使用与资源相同的 Eloquent 模型。为此,请使用资源的静态 $model 属性调用该方法。

Slug::make('Slug')
    ->slugUnique()
    ->slugModel(static::$model);

当这些选项设置后,生成的缩略字段将在设置的模型中相对于 Slug 字段的属性值唯一。

Spatie\Sluggable 一起使用

如果指定的 Eloquent 模型使用 Spatie\SluggableHasSlug 特性并实现了其 getSlugOptions() 方法,则不需要设置字段的分隔符、最大长度或语言。在这种情况下,生成器使用您已在模型上设置的值。

更新日志

有关最近更改的更多信息,请参阅 更新日志

安全

如果您发现任何安全问题,请通过电子邮件 robi@dpb.hu 而不是使用问题跟踪器

致谢

许可

MIT 许可证 (MIT)。有关更多信息,请参阅 许可文件

感谢

特别感谢

https://github.com/TheNerka/nova-sluggable/ https://github.com/drobee/nova-sluggable/