@@ -31,7 +31,7 @@ public function readExtendedMetadata($meta, array &$config)
3131 $ xml = $ xml ->children (self ::GEDMO_NAMESPACE_URI );
3232
3333 if (($ xmlDoctrine ->getName () == 'entity ' || $ xmlDoctrine ->getName () == 'mapped-superclass ' )) {
34- if (isset ($ xml ->translation )) {
34+ if ($ xml -> count () && isset ($ xml ->translation )) {
3535 /**
3636 * @var \SimpleXmlElement $data
3737 */
@@ -53,8 +53,14 @@ public function readExtendedMetadata($meta, array &$config)
5353
5454 if (property_exists ($ meta , 'embeddedClasses ' ) && $ meta ->embeddedClasses ) {
5555 foreach ($ meta ->embeddedClasses as $ propertyName => $ embeddedClassInfo ) {
56- $ xmlEmbbededClass = $ this ->_getMapping ($ embeddedClassInfo ['class ' ]);
57- $ this ->inspectElementsForTranslatableFields ($ xmlEmbbededClass , $ config , $ propertyName );
56+ $ xmlEmbeddedClass = $ this ->_getMapping ($ embeddedClassInfo ['class ' ]);
57+ $ this ->inspectElementsForTranslatableFields ($ xmlEmbeddedClass , $ config , $ propertyName );
58+ }
59+ }
60+
61+ if ($ xmlDoctrine ->{'attribute-overrides ' }->count () > 0 ) {
62+ foreach ($ xmlDoctrine ->{'attribute-overrides ' }->{'attribute-override ' } as $ overrideMapping ) {
63+ $ this ->buildFieldConfiguration ($ this ->_getAttribute ($ overrideMapping , 'name ' ), $ overrideMapping ->field , $ config );
5864 }
5965 }
6066
@@ -75,18 +81,24 @@ private function inspectElementsForTranslatableFields(\SimpleXMLElement $xml, ar
7581
7682 foreach ($ xml ->field as $ mapping ) {
7783 $ mappingDoctrine = $ mapping ;
78- /**
79- * @var \SimpleXmlElement $mapping
80- */
81- $ mapping = $ mapping ->children (self ::GEDMO_NAMESPACE_URI );
82- $ field = null !== $ prefix ? $ prefix . '. ' . $ this ->_getAttribute ($ mappingDoctrine , 'name ' ) : $ this ->_getAttribute ($ mappingDoctrine , 'name ' );
83- if (isset ($ mapping ->translatable )) {
84- $ config ['fields ' ][] = $ field ;
85- /** @var \SimpleXmlElement $data */
86- $ data = $ mapping ->translatable ;
87- if ($ this ->_isAttributeSet ($ data , 'fallback ' )) {
88- $ config ['fallback ' ][$ field ] = 'true ' == $ this ->_getAttribute ($ data , 'fallback ' ) ? true : false ;
89- }
84+
85+ $ fieldName = $ this ->_getAttribute ($ mappingDoctrine , 'name ' );
86+ if ($ prefix !== null ) {
87+ $ fieldName = $ prefix . '. ' . $ fieldName ;
88+ }
89+ $ this ->buildFieldConfiguration ($ fieldName , $ mapping , $ config );
90+ }
91+ }
92+
93+ private function buildFieldConfiguration ($ fieldName , \SimpleXMLElement $ mapping , array &$ config )
94+ {
95+ $ mapping = $ mapping ->children (self ::GEDMO_NAMESPACE_URI );
96+ if ($ mapping ->count () > 0 && isset ($ mapping ->translatable )) {
97+ $ config ['fields ' ][] = $ fieldName ;
98+ /** @var \SimpleXmlElement $data */
99+ $ data = $ mapping ->translatable ;
100+ if ($ this ->_isAttributeSet ($ data , 'fallback ' )) {
101+ $ config ['fallback ' ][$ fieldName ] = 'true ' == $ this ->_getAttribute ($ data , 'fallback ' ) ? true : false ;
90102 }
91103 }
92104 }
0 commit comments