veltix/nova-sluggable

Laravel Nova 的 slug 字段

1.0.1 2024-03-25 11:28 UTC

This package is auto-updated.

Last update: 2024-09-25 12:28:32 UTC


README

Latest Version on Packagist

为 Laravel Nova 生成唯一 slug 的 slug 字段,在输入时即可生成。

nova-sluggable demo

安装

您可以通过 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 在每个 key up 事件时更新,但可以将其绑定到标题字段的 blur 事件。

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

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

选项

自定义名称的 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 的最大长度

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

默认值: 255

最大长度

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

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

默认值: -

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

更新事件

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

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

接受值: keyupblur

默认值: keyup

唯一 slug 和 Eloquent 模型

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

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

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

当这两个选项被设置时,生成的 slug 将在设置模型中相对于 Slug 字段的属性值是唯一的。

Spatie\Sluggable 一起使用

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

更新日志

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

安全

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

致谢

许可证

MIT 许可证(MIT)。请参阅 许可证文件 了解更多信息。

鸣谢

特别感谢