Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
ConfigFactory.php
Go to the documentation of this file.
1 <?php
8 
13 use Magento\Theme\Api\Data\DesignConfigExtension;
14 use Magento\Theme\Api\Data\DesignConfigInterfaceFactory;
16 use Magento\Theme\Api\Data\DesignConfigDataInterfaceFactory;
17 use Magento\Theme\Api\Data\DesignConfigExtensionFactory;
20 
25 {
30 
34  protected $metadataProvider;
35 
40 
45 
49  protected $scopeValidator;
50 
54  protected $storeManager;
55 
64  public function __construct(
65  DesignConfigInterfaceFactory $designConfigFactory,
67  DesignConfigDataInterfaceFactory $designConfigDataFactory,
68  DesignConfigExtensionFactory $configExtensionFactory,
71  ) {
72  $this->designConfigFactory = $designConfigFactory;
73  $this->metadataProvider = $metadataProvider;
74  $this->designConfigDataFactory = $designConfigDataFactory;
75  $this->configExtensionFactory = $configExtensionFactory;
76  $this->scopeValidator = $scopeValidator;
77  $this->storeManager = $storeManager;
78  }
79 
89  public function create($scope, $scopeId, array $data = [])
90  {
91  if (!$this->scopeValidator->isValidScope($scope, $scopeId)) {
92  throw new LocalizedException(__('The scope or scope ID is invalid. Verify both and try again.'));
93  }
94  $designConfigData = $this->getDesignConfigData($scope, $scopeId);
95 
96  $configData = [];
97  foreach ($this->metadataProvider->get() as $name => $metadata) {
98  $metadata['field'] = $name;
100  $configDataObject = $this->designConfigDataFactory->create();
101  $configDataObject->setPath($metadata['path']);
102  $configDataObject->setFieldConfig($metadata);
103  if (isset($data[$name])) {
104  $configDataObject->setValue($data[$name]);
105  }
106  $configData[] = $configDataObject;
107  }
109  $designConfigExtension = $this->configExtensionFactory->create();
110  $designConfigExtension->setDesignConfigData($configData);
111  $designConfigData->setExtensionAttributes($designConfigExtension);
112 
113  return $designConfigData;
114  }
115 
123  protected function getDesignConfigData($scope, $scopeId)
124  {
126  $designConfigData = $this->designConfigFactory->create();
127 
128  $scopeInfo = $this->getCorrectScope($scope, $scopeId);
129  $designConfigData->setScope($scopeInfo['scope']);
130  $designConfigData->setScopeId($scopeInfo['scopeId']);
131 
132  return $designConfigData;
133  }
134 
142  protected function getCorrectScope($scope, $scopeId)
143  {
144  $isSingleStoreMode = $this->storeManager->isSingleStoreMode();
145  if ($isSingleStoreMode) {
146  $websites = $this->storeManager->getWebsites();
147  $singleStoreWebsite = array_shift($websites);
149  $scopeId = $singleStoreWebsite->getId();
150  }
151  return [
152  'scope' => $scope,
153  'scopeId' => $scopeId
154  ];
155  }
156 }
__()
Definition: __.php:13
__construct(DesignConfigInterfaceFactory $designConfigFactory, MetadataProviderInterface $metadataProvider, DesignConfigDataInterfaceFactory $designConfigDataFactory, DesignConfigExtensionFactory $configExtensionFactory, ScopeValidatorInterface $scopeValidator, StoreManagerInterface $storeManager)
if(!isset($_GET['name'])) $name
Definition: log.php:14