zymawy/arabify

:closed_lock_with_key: 用于处理阿拉伯语语言的包装Sluggable Traits


README

| 这是一个仅支持阿拉伯语语言Slug的包装包

提供了一个HasSlug trait,当保存您的Laravel Eloquent模型时将生成唯一的slug。

$model = new Article();
$model->name = 'كيف اتعلم البرمجة';
$model->save();

echo $model->slug; // ouputs "كيف-اتعلم-البرمجة"

安装

更新您的项目composer.json文件。

composer require zymawy/arabify

您可能想要更改可以通过配置进行的函数

php artisan vendor:publish --provider="Zymawy\Arabify\ArabifyServiceProvider"

用法

您的Eloquent模型可以使用Zymawy\Arabfiy\HasSlug trait和Zymawy\Arabfiy\SlugOptions类。

该trait有一个受保护的getSlugOptions()方法,您可以对其进行实现以进行自定义。

以下是一个示例

class YourEloquentModel extends Model
{
    use HasSlug;
    
    /**
     * This function is optional and only required
     * when you want to override the default behaviour
     */
    protected function getSlugOptions()
    {
        return SlugOptions::create()
            ->slugSeperator('-')
            ->generateSlugFrom('name')
            ->saveSlugTo('slug');
    }
}

如果您想要从关系生成slug。

class YourEloquentModel extends Model
{
    use HasSlug;
    
    public function getNameAndFooAttribute()
    {
        $name = $this->name;
        if ($this->foo) {
            $name .= " {$this->foo->name}";
        }

        return $name;
    }
    
    protected function getSlugOptions()
    {
        return SlugOptions::create()
            ->generateSlugFrom('name_and_foo');
    }
}

配置

您不需要在模型中添加方法(上面的内容将作为默认使用)。只有在您想要更改默认行为时才需要。

默认情况下,将从name生成slug并将其保存到slug列。

它将添加一个后缀-1以使slug唯一。您可以通过调用makeSlugUnique(false)来禁用它。

它将使用-作为分隔符。您可以通过调用slugSeperator('_')来更改它。

您可以使用多个字段作为slug的来源generateSlugFrom(['firstname', 'lastname'])

您还可以将callable函数传递给generateSlugFrom()

有关选项和可用配置函数的详细信息,请参阅这里

致谢

有关参与此项目的贡献者的列表,请参阅此处