Перевод KNP: перевод существующего объекта - PullRequest
0 голосов
/ 21 февраля 2019

Я использую переводимый модуль KnpLabs / Doctrine2Behaviors для управления интернационализацией внутри моего проекта Symfony2.

Я также использую пакет jms / i18n-routing-bundle для настройки текущей локали через префикс URL (''/ fr ',' /en').

У меня есть объект Post:

<?php

use Doctrine\ORM\Mapping as ORM;
use Knp\DoctrineBehaviors\Model as ORMBehaviors;

/**
 * @ORM\Entity
 */
class Post
{
    use ORMBehaviors\Translatable\Translatable;

    /**
     * @ORM\Column(type="string", length=255)
     */
    protected $someFieldIDoNotNeedToTranslate;

...

    public function getName()
    {
        return $this->proxyCurrentLocaleTranslation('getName', array());
    }

    public function setName($name)
    {
        return $this->proxyCurrentLocaleTranslation('setName', array($name));
    }
...
}

И объект PostTranslation:

<?php

use Doctrine\ORM\Mapping as ORM;
use Knp\DoctrineBehaviors\Model as ORMBehaviors;

/**
 * @ORM\Entity
 */
class PostTranslation
{
    use ORMBehaviors\Translatable\Translation;

    /**
     * @ORM\Column(type="string", length=255)
     */
    protected $name;

    /**
     * @return string
     */
    public function getName()
    {
        return $this->name;
    }

    /**
     * @param  string
     * @return null
     */
    public function setName($name)
    {
        $this->name = $name;
    }
}

Теперь я хочу следующеережим работы:

  • Включить создание поста только в локали по умолчанию
  • Сделать возможным перевод существующей сущности при просмотре в другой локали

Созданиев локали по умолчанию работает хорошо.Я использую функцию setCurrentLocale в своей новой сущности перед предоставлением ее в форму.

Но когда я редактирую сущность в другой локали, она заменяет данные локали по умолчанию вместо создания нового перевода для этой локали,несмотря на использование функции setCurrentLocale на объекте перед предоставлением его в форму редактирования.

Я также пытался создать новый перевод своей сущности в предварительно заданных событиях формы, но безуспешно.

Как я могу сказать, что переводимый модуль Knp должен создать новый перевод моей сущности, если он не существует в выбранной локали?

PS: Когда я вручную создаю трансляции в обеих локалях в таблице,Модуль корректно отображает и редактирует данные в зависимости от выбранной локали.

...