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

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

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

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]