0

我使用 KnpDoctrineBehaviors(Sluggable、Translatable 等)。我用于 slug 的字段,我只有在 MyClassTranslations 中。因此,当我为我的翻译类添加 Sluggable 时,我为每个 i18n 条目都有不同的 slug。如何解决这个问题?谢谢!

4

1 回答 1

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();
    }
于 2016-05-14T12:30:53.110 回答