【问题标题】:How to add records with translation into a fixture symfony如何将带有翻译的记录添加到夹具 symfony
【发布时间】:2020-07-23 18:05:17
【问题描述】:

我需要一些解决方案,使用 gedmo/doctrine-extensions 中的可翻译插件将带有 en 和 es 语言翻译的记录添加到夹具中。

我测试了几种方法,但我无法达到目标

        $musicGenre = new MusicalGenre();
        $musicGenre->setName($genre);
        $musicGenre->setEnabled(true);
        $this->addReference(self::MUSIC_GENRE_REFERENCE."-".$key, $musicGenre);
        $manager->persist($musicGenre);

        /*$musicGenre2 = new MusicalGenreTranslation();
        $musicGenre2->setLocale('es_ES');
        $musicGenre2->setObjectClass(MusicalGenre::class);
        $musicGenre2->setField('genre');
        $musicGenre2->setContent($genre);
        $musicGenre2->setForeignKey($key+1);
        $manager->persist($musicGenre2);*/

我不知道如何使用其他语言设置或更新每条记录,因为默认记录是用英语插入的。

【问题讨论】:

  • 给定的代码有什么问题?它依赖于哪些部分的翻译?

标签: php symfony doctrine translation fixtures


【解决方案1】:

我找到了一个丑陋的解决方案,但运行。

$musicGenre = new MusicalGenre();
        $musicGenre->setName($genre);
        $musicGenre->setEnabled(true);
        $musicGenre->setCreatedBy('admin');
        $musicGenre->setUpdatedBy('admin');
        $musicGenre->setCreatedAt(new DateTime());
        $musicGenre->setUpdatedAt(new DateTime());
        **$musicGenre->setTranslatableLocale('en');**
        $this->addReference(self::MUSIC_GENRE_REFERENCE."-".$key, $musicGenre);
        $manager->persist($musicGenre);
        $manager->flush();

        $musicGenre2 = new MusicalGenreTranslation();
        $musicGenre2->setLocale('es');
        $musicGenre2->setObjectClass(MusicalGenre::class);
        $musicGenre2->setField('name');
        $musicGenre2->setContent(self::GENRES_ES[$key]);
        $musicGenre2->setForeignKey($musicGenre->getId());
        $manager->persist($musicGenre2);
        $manager->flush();

        $musicGenre3 = new MusicalGenreTranslation();
        $musicGenre3->setLocale('en');
        $musicGenre3->setObjectClass(MusicalGenre::class);
        $musicGenre3->setField('name');
        $musicGenre3->setContent($genre);
        $musicGenre3->setForeignKey($musicGenre->getId());
        $manager->persist($musicGenre3);
        $manager->flush();

在第一个块中,我在桌子上插入音乐流派。对于它的翻译,我正在使用语言环境手动插入音乐流派翻译。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-08
    • 1970-01-01
    • 2017-08-09
    • 2014-01-07
    • 1970-01-01
    相关资源
    最近更新 更多