我想使用可缓慢的bahaviour,但在某些条件下。我这样配置:
/**
* @Gedmo\Slug(fields={"title"}, updatable=false)
* @ORM\Column(length=255, unique=true)
*/
protected $slug;
默认情况下,我希望在所有持久性上生成一个slug,而我希望只有在特定条件有效时才更新slug。
在我的实体监听器中,我做了
public function preUpdate($product_culture, PreUpdateEventArgs $event)
{
if ($event->hasChangedField('title')) {
$this->getProductCultureService()->setProductCulture($product_culture);
if ($this->getProductCultureService()->isSluggable()) {
$product_culture->setSlug(null);
}
}
}
slug在persist上正确生成,条件还可以,但是当我将slug设置为null
以便可以重新生成时,我最终会在数据库中使用null
。
doc说必须将slug设置为null才能重新生成它。
你知道我错过了吗?
由于
答案 0 :(得分:0)
我设法找到了解决问题的方法。 我不知道为什么但是可缓慢的监听器几乎所有功能都处于私有模式。这非常令人沮丧,因为无法扩展它。 所以我复制了它并将我的逻辑添加到onFlush方法。
现在工作正常。