Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
重写属性并使其在条令可翻译/Symfony2中可翻译_Symfony_Doctrine Extensions - Fatal编程技术网

重写属性并使其在条令可翻译/Symfony2中可翻译

重写属性并使其在条令可翻译/Symfony2中可翻译,symfony,doctrine-extensions,Symfony,Doctrine Extensions,我有一个带有字符串属性“name”的映射超类,它属于一个bundle(实际上是syliusassortationbundle)。 我的包中有一个类继承自映射的超类。 我想通过使用DoctrineExtensions(translateable)将可翻译功能添加到实体中。 由于我无法在映射中重新声明属性“name”,因此我尝试按照以下原则文档覆盖该属性的映射: 受此启发,我将其添加到product.orm.xml文件中 <attribute-overrides>

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

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

    <attribute-overrides>
        <attribute-override name="name">
            <field name="name" column="name" type="string">
                <gedmo:translatable/>
            </field>
        </attribute-override>
    </attribute-overrides>
只有“trans_名称”已保存到“ext_translations”表中

所以。是否可以覆盖映射并添加可翻译的? 如果是的话。我做错了什么


谢谢

据我所知,
@AttributeOverrides
@AssociationOverrides
等注释被引入以覆盖条令的字段和关联。不支持覆盖其他批注(如
@Gedmo\translateable


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

假设问题多年前就解决了,但我刚刚在
gedmo/doctrine extensions
中创建了pull请求,因为遇到了同样的问题:

谢谢Jasper。我想这是一种一厢情愿的想法:-)我已经尝试了你指出的我认为应该有效的替代方案。。。但是仍然存在一些问题,例如(我认为)原始捆绑包使用Doctrine的RTEL这一事实。没有进一步研究并解决它,而是创建了一些自定义的可翻译属性。(顺便说一句:不再是SyliusAsSortionBundle,而是SyliusVariableProductBundle)RTEL不应该是个问题,只要确保没有加载第三方包(您复制的包)中的XML映射文件。这实际上是我读到的关于堆栈溢出的最悲伤、也是最真实的答复之一(
    <field name="trans_name" type="string">
        <gedmo:translatable/>
    </field>
$e->setTranslatableLocale('fr_fr');
$e->setName('name fr');
$e->setTransName('trans name fr');