/** * Retrieve fields metadata * * @param string $scope * @param int $scopeId * @return array */ protected function getMetadataValues($scope = ScopeConfigInterface::SCOPE_TYPE_DEFAULT, $scopeId = null) { $result = []; foreach ($this->metadataProvider->get() as $itemName => $itemData) { if (isset($itemData['use_in_grid']) && (bool) $itemData['use_in_grid']) { $result[$itemName] = $this->valueProcessor->process($this->appConfig->getValue($itemData['path'], $scope, $scopeId), $itemData['path']); } } return $result; }
/** * Create Design Configuration for scope * * @param mixed $scope * @param int $scopeId * @param array $data * @return DesignConfigInterface * @throws LocalizedException */ public function create($scope, $scopeId, array $data = []) { if (!$this->scopeValidator->isValidScope($scope, $scopeId)) { throw new LocalizedException(__('Invalid scope or scope id')); } $designConfigData = $this->getDesignConfigData($scope, $scopeId); $configData = []; foreach ($this->metadataProvider->get() as $name => $metadata) { $metadata['field'] = $name; /** @var DesignConfigDataInterface $configDataObject */ $configDataObject = $this->designConfigDataFactory->create(); $configDataObject->setPath($metadata['path']); $configDataObject->setFieldConfig($metadata); if (isset($data[$name]) || isset($metadata['default'])) { $configDataObject->setValue(isset($data[$name]) ? $data[$name] : $metadata['default']); } $configData[] = $configDataObject; } /** @var DesignConfigExtension $designConfigExtension */ $designConfigExtension = $this->configExtensionFactory->create(); $designConfigExtension->setDesignConfigData($configData); $designConfigData->setExtensionAttributes($designConfigExtension); return $designConfigData; }
/** * Add additional fields to fieldset * * @param array $data * @return array */ public function addDynamicData(array $data) { $additionalFields = $this->convert($this->metadataProvider->get()); $data['fields'] = $this->merge($data['fields'], $additionalFields); return $data; }