使用
StofDoctrineExtensionsBundle
(对于symfony)我为我的实体生成一个slug
Institution
基于其属性
internationalName
这样地:
机构.php
/**
* @ORM\Column(type="string", length=100, unique=true)
* @Gedmo\Slug(fields={"internationalName"})
*/
private $slug;
在我的配置设置中,我设置了
sluggable: true
当创建一个新的
机构
或者更新现有的。
在刷新到数据库之前,我需要在控制器中生成slug。问题是,slug是在新实体刷新到数据库时生成的。我已经搜索了这个问题,发现了两个没有令人满意答案的问题,
here
和
here
.
最好的建议是改变
getSlug()
在这样的实体中:
public function getSlug()
{
if (!$this->slug) {
return Urlizer::urlize($this->getInternationalName());
}
return $this->slug;
}
然而,
国际名称
因为我的实体不必是唯一的,所以如果
国际名称
数据库中已存在,这会在我的控制器中产生问题。
有没有办法产生一个独特的弹头预冲洗?