📜  spatie sluggable 不工作 - PHP (1)

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

spatie/sluggable 不工作 - PHP 主题

简介

spatie/sluggable 是一个 PHP 包,可以将字符串转换为 URL 友好的字符,以便用于 SEO 或美观的 URL。

然而,有时它可能会出现不工作的情况,本文将介绍一些可能的原因和解决方法。

可能的问题和解决方法
问题:slug 字段为空

如果使用 spatie/sluggable 时,你发现生成的 slug 字段是空的,可能是以下原因之一:

  • 模型中的 $sluggable 数组未配置正确。
  • 你已经将字符串转换为 slug,但没有将其保存到数据库。

解决方法

  • 确保 $sluggable 数组已正确设置,可以通过以下代码检查:

    public function getSlugOptions() : Sluggable
    {
        return Sluggable::create();
    }
    
    public function sluggify()
    {
        return $this->slug;
    }
    
    public function getSluggable(): array
    {
        return [
            'save_to' => 'slug',
            'on_update' => true,
            'replace' => false,
            'generate_slugs_on_create' => true,
            'include_trashed' => false,
            'delimiter' => '-',
            'maximum_length' => null,
            'uri_segment' => null,
            'unique' => false,
            'uniqueSuffix' => null,
            'slugEngineOptions' => [],
            'slugifyModelSlugAttributes' => true,
        ];
    }
    
  • 确保将 slug 字段正确保存到数据库,例如:

    $model->slug = $model->sluggify();
    $model->save();
    
问题:slug 字段不是 URL 友好的字符串

如果使用 spatie/sluggable 时,你发现生成的 slug 不是 URL 友好的字符串,可能是以下原因之一:

  • 错误的 slug 分隔符或最大长度。
  • 其它设置被覆盖,导致生成的 slug 不是 URL 友好的字符串。

解决方法

  • 确保 $sluggable 数组已正确设置,可以通过以上代码片段检查。
  • 通过修改 $sluggable 数组中的值,例如更改分隔符、增加最大长度等,以生成 URL 友好的 slug。
结论

spatie/sluggable 是一个非常有用的 PHP 包,可以自动将字符串转换为 URL 友好的字符。但是,有时它可能会出现问题。通过本文中提供的解决方法,你应该能够解决大多数问题。

希望本文对你有所帮助!