drobee/nova-sluggable

Laravel Nova 的 slug 字段

1.2.8 2024-05-24 13:03 UTC

This package is auto-updated.

Last update: 2024-09-24 13:38:23 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');

语言

使用 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() 方法,否则生成的 slug 不会是唯一的。

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

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

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

Spatie\Sluggable 一起使用

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

变更日志

有关最近更改的更多信息,请参阅 CHANGELOG

安全

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

致谢

许可证

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

致谢

特别感谢