Используя 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
для моей сущности не обязательно должно быть уникальным, поэтомуflush slug 'может быть существующим, если internationalName
уже существует в базе данных, что создает проблему в моем контроллере.
Существует ли решение для создания уникальной предварительной очистки слага?