Расширение доктрины: генерируйте слаг перед тем, как записывать в базу данных - PullRequest
0 голосов
/ 02 декабря 2018

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...