Расширение доктрины: генерируйте слаг перед тем, как записывать в базу данных

С использованием StofDoctrineExtensionsBundle (для Symfony) я создаю слизняк для своей сущности Institution на основании его атрибута internationalName как это:

Institution.php

/**
 * @ORM\Column(type="string", length=100, unique=true)
 * @Gedmo\Slug(fields={"internationalName"})
 */
private $slug;

В моих настройках конфигурации я установил sluggable: true и генерация уникального слаг работает как положено при создании нового Institution или обновление существующего.

Мне нужно сгенерированный слаг в контроллере перед сбросом в базу данных. Проблема в том, что слаг генерируется, когда новый объект сбрасывается в базу данных. Я искал эту проблему и обнаружил два вопроса без удовлетворительных ответов, здесь и здесь.

Лучшее предложение изменить getSlug() в сущности так:

public function getSlug()
{
    if (!$this->slug) {
        return Urlizer::urlize($this->getInternationalName());
    }
    return $this->slug;
}

Тем не менее internationalName поскольку моя сущность не обязательно должна быть уникальной, поэтому "предварительно очищенный слаг" может быть существующим, если internationalName уже существует в базе данных, что создает проблему в моем контроллере.

Есть ли решение для создания уникальной предварительной очистки пули?

0 ответов

Другие вопросы по тегам