Статья рассказывает о способе создания уникальных транслитерированных URL-адресов в проектах Laravel с использованием библиотеки spatie/laravel-sluggable.
При сохранении модели библиотеке передаётся параметр откуда брать имя и в какую ячейку писать URL. Затем система проверяет базу, и при обнаружении дубликата добавляет суффиксы (-1, -2 и т.д.).
Шаг 1. Установка
composer require spatie/laravel-sluggable
Шаг 2. Добавление в модель
Подключаем нужные классы в модели (например, Post):
use Spatie\\Sluggable\\HasSlug; use Spatie\\Sluggable\\SlugOptions;
Шаг 3. Подключение трейта и конфигурация
use HasSlug;
public function getSlugOptions() : SlugOptions
{
return SlugOptions::create()
->generateSlugsFrom('title')
->saveSlugsTo('url');
}
Полный пример модели
generateSlugsFrom('title')
->saveSlugsTo('url');
}
}
Расширенные возможности
Для большей гибкости можно использовать несколько полей для генерации слага:
->generateSlugsFrom(['first_name', 'last_name'])
->saveSlugsTo('slug');
Инструкция актуальна для Laravel 5.5/5.6 и выше.