Главная/Статьи/Laravel: Автоматическое создание уникальных URL адресов
Laravel

Laravel: Автоматическое создание уникальных URL адресов

Статья рассказывает о способе создания уникальных транслитерированных 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 и выше.