С использованием 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
уже существует в базе данных, что создает проблему в моем контроллере.
Есть ли решение для создания уникальной предварительной очистки пули?
Задача ещё не решена.
Других решений пока нет …