@@ -400,15 +400,46 @@ public function doExtractData(FieldNode $ast, &$data, $container, $args, $contex
400
400
// in this case we just try to get the data directly
401
401
if ($ container instanceof DefaultMockup) {
402
402
try {
403
- // we don't have to take care about localization because this is already handled in elastic
404
- $ data [$ astName ] = $ container ->$ getter ();
403
+ $ this ->setValueFromMockObject ($ data , $ container , $ astName );
405
404
} catch (\Exception $ e ) {
406
405
Logger::info ('Could not get data from Datahub/DataObjectFieldHelper with message: ' . $ e ->getMessage ());
407
406
}
408
407
}
409
408
}
410
409
}
411
410
411
+ /**
412
+ * Try to get the data from the mock object.
413
+ *
414
+ * Elastic values are already language specific so no locale handling.
415
+ *
416
+ * Because the DefaultMockup class doesn't provide APIs to check if data
417
+ * exist we've to load all the things and essentially rebuild how
418
+ * \Pimcore\Bundle\EcommerceFrameworkBundle\Model\DefaultMockup::__call()
419
+ * works.
420
+ *
421
+ * @param $data
422
+ * @param \Pimcore\Bundle\EcommerceFrameworkBundle\Model\DefaultMockup $container
423
+ * @param $astName
424
+ *
425
+ * @return mixed|void
426
+ */
427
+ protected function setValueFromMockObject (&$ data , DefaultMockup $ container , $ astName )
428
+ {
429
+ $ params = $ container ->getParams ();
430
+ if (is_array ($ params ) && array_key_exists ($ astName , $ params )) {
431
+ $ data [$ astName ] = $ params [$ astName ];
432
+ } else {
433
+ $ relations = $ container ->getRelations ();
434
+ if (is_array ($ relations ) && array_key_exists ($ astName , $ relations )) {
435
+ $ relation = $ container ->getRelationAttribute ($ astName );
436
+ if ($ relation ) {
437
+ $ data [$ astName ] = $ relation ;
438
+ }
439
+ }
440
+ }
441
+ }
442
+
412
443
/**
413
444
* @param object $container
414
445
* @param string $astName
0 commit comments