Переопределить свойство и сделать его переводимым в Doctrine Translatable / Symfony2

У меня есть mapped-superclass со строковым свойством 'name', которое принадлежит пакету (на самом деле SyliusAssortmentBundle). У меня есть класс в моих пакетах, который наследуется от этого сопоставленного суперкласса. Я хочу добавить к своей сущности возможности Translatable с помощью 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) к своей сущности, поэтому я уверен, что Translatable Extension работает.

    <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? Если так. Что я делаю не так?...

спасибо


person javigzz    schedule 11.04.2013    source источник


Ответы (2)


Насколько мне известно, аннотации @AttributeOverrides, @AssociationOverrides и т. д. вводятся для переопределения полей и ассоциаций Doctrine. Переопределение других аннотаций (например, @Gedmo\Translatable) не поддерживается.

В качестве альтернативы вы можете скопировать/вставить сопоставления в свой собственный пакет, добавить дополнительные, которые вам нужны (например, @Gedmo\Translatable), и загрузить эти сопоставления вместо сопоставлений из SyliusAssortmentBundle.

person Jasper N. Brouwer    schedule 20.08.2013
comment
спасибо Джаспер. Я думаю, это было немного желаемое за действительное, чтобы попробовать это :-) Я попробовал альтернативу, которую вы указываете, которая, по моему мнению, должна работать ... но все еще есть некоторые проблемы, возникающие (я думаю) тот факт, что исходный пакет использует RTEL доктрины. не стал проводить дальнейшие исследования и решил создать пару пользовательских переводимых свойств. (кстати: больше не SyliusAssortmentBundle, а SyliusVariableProductBundle) - person javigzz; 21.08.2013
comment
RTEL не должен быть проблемой, просто убедитесь, что файлы сопоставления XML из стороннего пакета (те, которые вы скопировали) не загружены. - person Jasper N. Brouwer; 21.08.2013
comment
На самом деле это один из самых грустных, но в то же время самых правдивых ответов, которые я читал на Stack Overflow. :( - person kyeno; 01.10.2020

Предположим, проблема решена много лет назад, но я только что создал запрос на включение в gedmo/doctrine-extensions, потому что столкнулся с той же проблемой: https://github.com/Atlantic18/DoctrineExtensions/pull/1631

person Valentas    schedule 14.07.2016