📜  在创建 laravel 时生成 slug - PHP (1)

📅  最后修改于: 2023-12-03 15:07:58.275000             🧑  作者: Mango

在创建 Laravel 时生成 slug - PHP

在Laravel应用程序中, slug是指从标题或其他文本中生成的短标识符。 slug通常用于生成SEO友好的URL。在本教程中,我们将展示如何使用PHP在Laravel应用程序中自动生成slug。

设置需要的依赖项

在Laravel中,我们可以使用str_slug函数为给定的字符串生成slug。确保您在composer.json文件中有以下依赖项。

{
    "require": {
        "illuminate/support": "5.7.*"
    }
}

在安装后,确保在代码中包含以下命名空间:

use Illuminate\Support\Str;
创自动生成slug方法

现在,我们将创建一个generateSlug方法在Post模型中,将为我们的文章自动生成slug,以提高SEO友好程度。

public static function generateSlug($title)
{
    $slug = Str::slug($title);
    $count = static::whereRaw("slug RLIKE '^{$slug}(-[0-9]+)?$'")->count();

    return $count ? "{$slug}-{$count}" : $slug;
}

在上面代码中,我们使用Str::slug函数将标题转换为slug。然后,我们使用正则表达式计数器检查是否已使用它,并在必要时将数字添加到末尾。

如何在控制器中使用

现在我们已经编写了自动生成slug的代码,可以在控制器中使用以下代码来调用。

public function store(Request $request)
{
    $post = new Post;
    $post->title = $request->title;
    $post->slug = Post::generateSlug($request->title);
    $post->content = $request->content;
    $post->save();

    return redirect()->route('posts.index')->with('success','Post has been created.');
}

这将自动在保存文章时生成slug。

结论

在本教程中,我们介绍了如何在Laravel中自动生成slug。使用Str::slug和正则表达式计数器,我们可以轻松地为我们的应用程序生成SEO友好URL,从而提高流量并提高搜索引擎排名。