Beispiel #1
0
 /**
  * Save config section
  * Require set: section, website, store and groups
  *
  * @throws \Exception
  * @return $this
  */
 public function save()
 {
     $this->initScope();
     $sectionId = $this->getSection();
     $groups = $this->getGroups();
     if (empty($groups)) {
         return $this;
     }
     $oldConfig = $this->_getConfig(true);
     $deleteTransaction = $this->_transactionFactory->create();
     /* @var $deleteTransaction \Magento\Framework\DB\Transaction */
     $saveTransaction = $this->_transactionFactory->create();
     /* @var $saveTransaction \Magento\Framework\DB\Transaction */
     // Extends for old config data
     $extraOldGroups = [];
     foreach ($groups as $groupId => $groupData) {
         $this->_processGroup($groupId, $groupData, $groups, $sectionId, $extraOldGroups, $oldConfig, $saveTransaction, $deleteTransaction);
     }
     try {
         $deleteTransaction->delete();
         $saveTransaction->save();
         // re-init configuration
         $this->_appConfig->reinit();
         $this->_storeManager->reinitStores();
         // website and store codes can be used in event implementation, so set them as well
         $this->_eventManager->dispatch("admin_system_config_changed_section_{$this->getSection()}", ['website' => $this->getWebsite(), 'store' => $this->getStore()]);
     } catch (\Exception $e) {
         // re-init configuration
         $this->_appConfig->reinit();
         $this->_storeManager->reinitStores();
         throw $e;
     }
     return $this;
 }