2

我有一个映射超类,其字符串属性“名称”属于一个包(实际上是 SyliusAssortmentBundle)。我的包中有一个继承自该映射超类的类。我想通过使用 DoctrineExtensions (Translatable) 为我的实体添加可翻译功能。由于我无法在我的映射中重新声明属性“名称”,因此我正在尝试按照此原则文档覆盖该属性的映射:

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>

这似乎不起作用。我已向我的实体添加了一个虚拟属性 (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”表中。

所以。是否可以覆盖映射并添加可翻译?如果是这样。我究竟做错了什么?...

谢谢

4

2 回答 2

2

据我所知@AttributeOverrides@AssociationOverrides引入 , 等注释是为了覆盖 Doctrine 的字段和关联。@Gedmo\Translatable不支持覆盖其他注释(如)。

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

于 2013-08-20T11:59:04.993 回答
0

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

于 2016-07-14T17:48:57.763 回答