📜  如何在 laravel 中创建 slug - PHP (1)

📅  最后修改于: 2023-12-03 14:52:23.542000             🧑  作者: Mango

如何在 Laravel 中创建 Slug

介绍

Slug 是一个常见的概念,它用于将 URL 中的资源标识符转化成易于读取和记忆的形式。例如,一个文章的标题“如何在 Laravel 中创建 Slug - PHP”,可以被转换成 "how-to-create-slug-in-laravel-php"。 这使得 URL 更加可读,更加用户友好。

在 Laravel 中,Slug 已经成为一个常见的需求,因此本文将介绍如何在 Laravel 中创建 Slug。

步骤
步骤一:安装 Laravel

首先,我们需要安装 Laravel。你可以在 Laravel 官网 上找到安装步骤。

步骤二:创建数据库

接下来,我们需要创建一个数据库。我们可以使用 Laravel 中的 Artisan 命令来完成这个任务。

php artisan make:database your_database_name
步骤三:创建 Model 和 Migration

我们可以使用 Artisan 命令快速创建 Model 和 Migration:

php artisan make:model Post -m
步骤四:将 Slug 添加到模型中

我们需要向模型中添加一个 slug 属性,并使用 Model 的 boot 方法来监听 created 事件。每当一个实例被创建时,我们将生成一个唯一的 Slug 值。

namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Str;

class Post extends Model
{
    protected $fillable = ['title', 'content', 'slug'];

    public static function boot()
    {
        parent::boot();

        self::created(function ($model) {
            $model->slug = Str::slug($model->title, '-');
            $model->save();
        });
    }
}
步骤五:添加 Slug 到路由

最后,我们需要在路由中使用上面生成的 Slug 值。我们可以使用 Model 的 routeKeyName 来为路由提供一个自定义的键名。

Route::get('posts/{post:slug}', function (Post $post) {
    return view('posts.show', compact('post'));
});

注意:在使用 routeKeyName 时,请确保和模型中定义的 slug 属性名称一致。

结论

现在,我们已经在 Laravel 中成功创建 Slug。通过使用 Model 的 boot 方法,我们可以轻松地监听事件并自动填充 Slug 值。同时,我们还展示了如何将 Slug 添加到路由中。

参考

Creating a Unique Slug in Laravel Using Model Events