📅  最后修改于: 2023-12-03 14:52:23.542000             🧑  作者: Mango
Slug 是一个常见的概念,它用于将 URL 中的资源标识符转化成易于读取和记忆的形式。例如,一个文章的标题“如何在 Laravel 中创建 Slug - PHP”,可以被转换成 "how-to-create-slug-in-laravel-php"。 这使得 URL 更加可读,更加用户友好。
在 Laravel 中,Slug 已经成为一个常见的需求,因此本文将介绍如何在 Laravel 中创建 Slug。
首先,我们需要安装 Laravel。你可以在 Laravel 官网 上找到安装步骤。
接下来,我们需要创建一个数据库。我们可以使用 Laravel 中的 Artisan 命令来完成这个任务。
php artisan make:database your_database_name
我们可以使用 Artisan 命令快速创建 Model 和 Migration:
php artisan make:model Post -m
我们需要向模型中添加一个 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 值。我们可以使用 Model 的 routeKeyName
来为路由提供一个自定义的键名。
Route::get('posts/{post:slug}', function (Post $post) {
return view('posts.show', compact('post'));
});
注意:在使用 routeKeyName
时,请确保和模型中定义的 slug
属性名称一致。
现在,我们已经在 Laravel 中成功创建 Slug。通过使用 Model 的 boot
方法,我们可以轻松地监听事件并自动填充 Slug 值。同时,我们还展示了如何将 Slug 添加到路由中。