如何结合可谓和可翻译

时间:2015-07-30 20:40:08

标签: php symfony

嗯,我知道这个问题被问了很多次,但我保证我会把它们都读出来......

我使用StofDoctrineExtensions bundle。它的配置似乎没问题,因为当我使用locale default(fr)添加我的类别时,它可以工作。

但是,当我想用​​英语(en)添加翻译时,表ext_translations中与slug相关的行会一直显示NULL ...不知道原因。

我的实体:

/**
 * @Gedmo\Slug(fields={"name"})
 * @ORM\Column(length=255, unique=true)
 * @Gedmo\Translatable
 */
private $slug;

/**
 * @var string
 *
 * @Gedmo\Translatable
 * @ORM\Column(name="name", type="string", length=255)
 */
private $name;

我的控制器:

$category->setDateUpd(time());
$category->setTranslatableLocale($locale);
$category->getImage1()->setTranslatableLocale($locale);
$category->getImage2()->setTranslatableLocale($locale);
$em->persist($category);
$em->flush();

ext_translations表的示例:

id: 31 
locale: en
object_class: Bliss\ArticleBundle\Entity\Category
field: name
foreign_key: 14
content: South India

id: 33 
locale: en
object_class: Bliss\ArticleBundle\Entity\Category
field: slug
foreign_key: 14
content: NULL

如果您需要更多信息,请与我们联系。

1 个答案:

答案 0 :(得分:1)

我想我需要发布StackOverflow才能在2天后找到答案......好吧,我还是很开心!

我更新了监听器:DoctrineExtensionListener,并在可翻译行之前添加了缓存行:

public function onLateKernelRequest(GetResponseEvent $event)
{
    $sluggable =  $this->container->get('gedmo.listener.sluggable');

    $translatable = $this->container->get('gedmo.listener.translatable');
    $translatable->setTranslatableLocale($event->getRequest()->getLocale());
}

谢谢你的时间, 布利斯