KnpDoctrineBehaviors,如何使用Sluggable with Translatable

时间:2013-07-23 15:26:16

标签: symfony doctrine-orm behavior symfony-2.3

我使用KnpDoctrineBehaviors(Sluggable,Translatable等)。我用于slug的字段,我只在MyClassTranslations中。因此,当我为我的翻译课程添加Sluggable时,我会为每个i18n条目添加不同的slug。怎么解决这个?谢谢!

1 个答案:

答案 0 :(得分:1)

您可以在实体中覆盖标题的getter,只需从实体上的KnpDoctrineBehaviors调用translate方法。它将尝试在您当前的区域设置中获取标题转换,或者回退到默认的区域设置转换。

<?php

namespace AppBundle\Entity;

use Knp\DoctrineBehaviors\Model as ORMBehaviors;
use AppBundle\Entity\AppTrait\TranslatableEntity;

class SomeEntity
{
    use ORMBehaviors\Translatable\Translatable;
    use ORMBehaviors\Sluggable\Sluggable;

    public function getSluggableFields()
    {
        return ['title'];
    }

    public function getTitle()
    {
        return $this->translate(null,true)->getTitle();
    }

这意味着如果你用不同的语言环境更新标题,那么slug可能会经常更新,你可能想避免这种情况,只需使用英文标题来生成slug:

    public function getTitle()
    {
        return $this->translate('en')->getTitle();
    }