覆盖属性并使其在Doctrine Translatable / Symfony2中可翻译

时间:2013-04-11 12:04:41

标签: symfony doctrine-extensions

我有一个带有字符串属性'name'的映射超类,它属于一个包(实际上是SyliusAssortmentBundle)。 我的bundle中有一个继承自该映射超类的类。 我想通过使用DoctrineExtensions(可翻译)为我的实体添加可翻译功能。 由于我无法在映射中重新声明属性“name”,因此我尝试在此学说文档后覆盖该属性的映射:

http://docs.doctrine-project.org/en/latest/reference/inheritance-mapping.html#attribute-override

受此启发,我将其添加到我的product.orm.xml文件

    <attribute-overrides>
        <attribute-override name="name">
            <field name="name" column="name" type="string">
                <gedmo:translatable/>
            </field>
        </attribute-override>
    </attribute-overrides>

这似乎不起作用。我已经为我的实体添加了一个dummie属性(trans_name),所以我确信可翻译扩展正在运行。

    <field name="trans_name" type="string">
        <gedmo:translatable/>
    </field>

坚持使用类似的东西:

$e->setTranslatableLocale('fr_fr');
$e->setName('name fr');
$e->setTransName('trans name fr');

只是'trans_name'已保存到'ext_translations'表。

因此。是否可以覆盖映射并添加Translatable? 如果是这样。我做错了什么?...

感谢

2 个答案:

答案 0 :(得分:1)

据我所知,引入了@AttributeOverrides@AssociationOverrides等注释来覆盖Doctrine的字段和关联。

支持覆盖其他注释(如@Gedmo\Translatable

作为替代方案,您可以将映射复制/粘贴到您自己的包中,添加您需要的额外包(如@Gedmo\Translatable)并加载这些映射而不是SyliusAssortmentBundle中的映射。

答案 1 :(得分:0)

假设问题在几年前解决了,但我刚刚在gedmo/doctrine-extensions中创建了拉取请求,因为碰到了同样的问题:https://github.com/Atlantic18/DoctrineExtensions/pull/1631