Я использую 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%'