Esempio n. 1
0
 /**
  * Perform actions after object save
  *
  * @param \Magento\Framework\Model\AbstractModel $object
  * @return $this
  */
 protected function _afterSave(\Magento\Framework\Model\AbstractModel $object)
 {
     $this->_clearUselessAttributeValues($object);
     return parent::_afterSave($object);
 }
Esempio n. 2
0
 /**
  * Save attribute/form relations after attribute save
  *
  * @param \Magento\Framework\Model\AbstractModel $object
  * @return $this
  * @SuppressWarnings(PHPMD.CyclomaticComplexity)
  */
 protected function _afterSave(AbstractModel $object)
 {
     $forms = $object->getData('used_in_forms');
     $connection = $this->getConnection();
     if (is_array($forms)) {
         $where = ['attribute_id=?' => $object->getId()];
         $connection->delete($this->_getFormAttributeTable(), $where);
         $data = [];
         foreach ($forms as $formCode) {
             $data[] = ['form_code' => $formCode, 'attribute_id' => (int) $object->getId()];
         }
         if ($data) {
             $connection->insertMultiple($this->_getFormAttributeTable(), $data);
         }
     }
     // update sort order
     if (!$object->isObjectNew() && $object->dataHasChangedFor('sort_order')) {
         $data = ['sort_order' => $object->getSortOrder()];
         $where = ['attribute_id=?' => (int) $object->getId()];
         $connection->update($this->getTable('eav_entity_attribute'), $data, $where);
     }
     // save scope attributes
     $websiteId = (int) $object->getWebsite()->getId();
     if ($websiteId) {
         $table = $this->_getEavWebsiteTable();
         $describe = $this->getConnection()->describeTable($table);
         $data = [];
         if (!$object->getScopeWebsiteId() || $object->getScopeWebsiteId() != $websiteId) {
             $data = $this->getScopeValues($object);
         }
         $data['attribute_id'] = (int) $object->getId();
         $data['website_id'] = (int) $websiteId;
         unset($describe['attribute_id']);
         unset($describe['website_id']);
         $updateColumns = [];
         foreach (array_keys($describe) as $columnName) {
             $data[$columnName] = $object->getData('scope_' . $columnName);
             $updateColumns[] = $columnName;
         }
         $connection->insertOnDuplicate($table, $data, $updateColumns);
     }
     return parent::_afterSave($object);
 }