Метод Symfony Transurable translate () не загружает вставленный объект в локали пользователя - PullRequest
0 голосов
/ 22 марта 2019

Я использую Symfony 4.2 вместе с stof / doctrine-extensions-bundle 1.3 в качестве решения для создания полей записей базы данных на разных языках.

Однако у меня возникла проблема:

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

Если языковой стандарт пользователя задан как ar_AE, результат вставленного объекта $ article отображается с системным языковым стандартом en_GB по умолчанию. Но дамп объектов для старых записей отображается правильно с локализованным переводом.

// TestController.php
public function create(EntityManagerInterface $em)
{
    $translation = $em->getRepository(Translation::class);

    $article = new Article();
    $article->setStatus(random_int(0, 1));
    // here I set other fields that don't require translations

    $translation
        ->translate($article, 'title', 'de_DE', 'Mein Titel auf Deutsch ' . $random)
        ->translate($article, 'title', 'en_GB', 'My Title in English ' . $random)
        ->translate($article, 'title', 'ar_AE', 'بلدي العنوان باللغة الإنجليزية ' . $random);


    $em->persist($article); // this will create object with ID = 2
    $em->flush();

    dump($article); // object ID = 2; shows without translation to ar_AE
    dump($em->getRepository(Article::class)->find($article->getId());  // object ID = 2; shows without translation to ar_AE
    dump($em->getRepository(Article::class)->find(1);  // shows correctly the object with translation to ar_AE
    die();
}

Все работает нормально, когда не добавляется объект Article, а выполняется поиск объекта, который был добавлен в предыдущем запросе.

// TestController.php
public function view(EntityManagerInterface $em)
{
    dump($em->getRepository(Article::class)->find(2);  // same object previously added now shows correctly with translation to ar_AE
    die();
}

Я что-то упустил в коде?

Соответствующие параметры из моей конфигурации:

# translation.yaml
framework:
    default_locale: '%locale%'
# services.yaml
parameters:
    locale: 'en_GB'
# stof_doctrine_extensions.yaml
stof_doctrine_extensions:
    default_locale: '%locale%'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...