arniro / laravel-sluggable
一个用于为 Laravel 模型生成短链接的包。也支持可翻译的列。
0.1.3
2020-12-04 04:55 UTC
Requires
- illuminate/support: >=5.0
Requires (Dev)
- mockery/mockery: ^1.1
- orchestra/testbench: ~3|~4
- phpunit/phpunit: ^8.0
- sempro/phpunit-pretty-print: ^1.0
- spatie/laravel-translatable: ^4.3
This package is auto-updated.
Last update: 2024-09-30 01:40:57 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)。有关更多信息,请参阅 许可证文件。