Как работать с slug в Symfony?

Slug - это уникальное текстовое представление заголовка или названия, которое используется в URL для удобства читаемости и оптимизации поисковых запросов. В Symfony можно легко работать с slug'ами с помощью компонента "String" и "Slugify".

Для начала необходимо установить компонент Slugify:

composer require cocur/slugify

После установки компонента, можно создать сервис Slugify и использовать его для генерации slug'ов:

use CocurSlugifySlugify;

$slugify = new Slugify();
$slug = $slugify->slugify('Заголовок статьи'); // Превращает текст в slug: "zagolovok-statii"

Для работы с slug'ами в Symfony, часто используется аннотация @UniqueEntity в Entity классе для гарантии уникальности slug'а. Например:

use SymfonyBridgeDoctrineValidatorConstraintsUniqueEntity;

/**
 * @ORMEntity
 * @UniqueEntity("slug")
 */
class Article
{
    // ...

    /**
     * @ORMColumn(type="string", length=255, unique=true)
     */
    private $slug;

    // Геттеры и Сеттеры

    // ...
}

Также в Symfony есть встроенный Slugger, который позволяет генерировать slug'и для строк:

use SymfonyComponentStringSluggerSluggerInterface;

$slug = $slugger->slug('Текст для генерации слага');

Этот метод может быть полезен при обработке данных перед сохранением в базу данных или при генерации URL'ов на основе названий.

Наконец, при работе с slug'ами в Symfony важно учитывать международные символы и языки, поэтому использование библиотеки Slugify или Slugger из Symfony помогает обрабатывать тексты правильно и безопасно.