arniro/laravel-sluggable

一个用于为 Laravel 模型生成短链接的包。也支持可翻译的列。

0.1.3 2020-12-04 04:55 UTC

README

安装

使用 composer 安装此包

composer require arniro/laravel-sluggable

用法

Sluggable 特性添加到模型中

use Arniro\Sluggable\Sluggable;
use Illuminate\Database\Eloquent\Model;

class Product extends Model
{
    use Sluggable;

    //
}

每次创建或更新模型时,都会默认从 name 列生成短链接到 slug 列。

Product::create([
    'name' => 'Lorem Ipsum'
]);

短链接列将填充以下值:lorem-ipsum。短链接值始终唯一。

您可以通过 getSluggable 方法覆盖用于生成短链接的列名

use Arniro\Sluggable\Sluggable;
use Illuminate\Database\Eloquent\Model;

class Product extends Model
{
    use Sluggable;

    public function getSluggable()
    {
        return 'title';
    }

    //
}

可翻译列

如果您的列是可翻译的,并且您使用了 spatie/laravel-translatable 包,它将在后台识别和使用,因此您只需将短链接列名添加到模型的 translatable 属性即可

use Arniro\Sluggable\Sluggable;
use Illuminate\Database\Eloquent\Model;
use Spatie\Translatable\HasTranslations;

class Product extends Model
{
    use HasTranslations, Sluggable;

    public $translatable = ['name', 'slug'];

    //
}

因此,如果现在您正在创建或更新可短链接列,所有其语言版本都将生成短链接

$product = Product::create([
    'name' => [
        'en' => 'Lorem Ipsum',
        'ru' => 'Lorem Ipsum Ru'
    ]
]);
$product->getTranslations('slug'); // ['en' => 'lorem-ipsum','ru' => 'lorem-ipsum-ru']

测试

composer test

许可证

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