josezenem/laravel-slugidable

一个用于Laravel的包,可以根据标题和ID为Eloquent模型创建别名

1.2.0 2024-03-12 21:38 UTC

This package is auto-updated.

Last update: 2024-09-08 12:06:44 UTC


README

Latest Stable Version Tests Total Downloads

一个用于Laravel的包,可以根据标题和ID为Eloquent模型创建别名

$model = new Blog();
$model->title = 'Dwight jumped over the fence';
$model->save();

echo $model->slug; // output: dwight-jumped-over-the-fence-012422

所有设置均可针对每个模型进行完全配置。

安装

您可以通过composer安装此包。

composer require josezenem/laravel-slugidable

使用

只需将Josezenem\Slugidable\Slugidable特质添加到您的模型中。

// App\Models\Blog
<?php

use Josezenem\Slugidable\Slugidable;

class Blog extends Model {
    use Slugidable;
    
    protected $fillable = [
        'title',
        'slug',
    ];
}

$blog = create([
    'title' => 'My dog Dwight jumped over the fence',
])

// When this is created, it will make the slug of
//my-dog-dwight-jumped-over-the-fence-1

我们包含了一个便捷的作用域方法:fromSlugidable(),它将从别名中提取ID并搜索模型

$blog = Blog::fromSlugidable('my-dog-dwight-012422')->first();

// in this scenario only ID: 012422 is used inside the scope to find the slug.

配置

默认情况下,我们使用模型中的id、title、slug列,但您可以通过向您的模型中添加以下方法来覆盖这些设置。

protected function configureSlugidableSettings():void
{
    $this->slugidableSettings = [
        'slug_from' => 'title',
        'slug_to' => 'slug',
        'using_key_name' => $this->getKeyName(),
        'on' => 'suffix',
        'using_separator' => '-',
        'force_slug_from' => false,
    ];
}
  • slug_from 是别名将从中获取的地方
  • slug_to 别名存在的地方
  • using_key_name 用于前缀或后缀的ID字段
  • on 可以是 "prefix" 以在别名文本之前放置ID,或 "suffix" 以在之后放置。
  • using_separator 在创建别名时使用的分隔符
  • force_slug_from 强制系统始终从 'slug_from' 获取别名,无论是否存在 slug_to

测试

composer test

变更日志

请参阅变更日志以获取有关最近更改的更多信息。

贡献

请参阅贡献指南以获取详细信息。

安全漏洞

请审查我们的安全策略以了解如何报告安全漏洞。

致谢

许可证

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