laraeast/laravel-sluggable

在Laravel中为Eloquent模型轻松创建短网址

v2.2.0 2021-06-18 07:18 UTC

This package is auto-updated.

Last update: 2024-09-18 14:31:21 UTC


README

StyleCI Travis Build Status Circleci Build Status Total Downloads Latest Stable Version License

在Laravel中为Eloquent模型轻松创建短网址。

背景:什么是短网址?

短网址是一个简化版本的字符串,通常是URL友好的。对字符串进行“短网址化”通常涉及将其转换为一种大小写,并删除任何非URL友好的字符(空格、带重音的字母、和号等)。生成的字符串可以用来作为特定资源的标识符。

例如,如果你有一个博客,其中包含文章,你可以通过ID来引用每篇文章

http://example.com/post/1
http://example.com/post/2

...但这并不友好(特别是对于SEO)。你可能更喜欢使用文章的标题作为URL,如果你的文章标题是"My Dinner With Ahmed & Omar",那么URL将是

http://example.com/post/1-my-dinner-with-ahmed-omar

安装

  • 通过Composer安装此包

    • Laravel 5.2 >= 6.x
      $ composer require laraeast/laravel-sluggable:^1.0
    • Laravel 7.x
      $ composer require laraeast/laravel-sluggable:^2.0

    该包将自动注册其服务提供者。

中间件

你应该将 SluggableRedirectMiddleware 添加到 web 中间件,以便重定向到最新的更新短网址。 app/Http/Kernel.php 文件

    /**
     * The application's route middleware groups.
     *
     * @var array
     */
    protected $middlewareGroups = [
        'web' => [
            ...
            \Laraeast\LaravelSluggable\SluggableRedirectMiddleware::class,
        ],
        ...
    ];

更新你的Eloquent模型

你的模型应使用Sluggable特性,它有一个抽象方法 sluggableFields(),你需要对其进行定义。这是设置任何特定模型配置的地方

use Laraeast\LaravelSluggable\Sluggable;

class Post extends Model
{
    use Sluggable;

    /**
     * The sluggable fields for model.
     *
     * @return array
     */
    public function sluggableFields()
    {
        return ['name'];
    }
}