/** * Process category data after save category object * save related products ids and update path value * * @param \Magento\Framework\DataObject $object * @return $this */ protected function _afterSave(\Magento\Framework\DataObject $object) { /** * Add identifier for new category */ if (substr($object->getPath(), -1) == '/') { $object->setPath($object->getPath() . $object->getId()); $this->_savePath($object); } $this->_saveCategoryProducts($object); return parent::_afterSave($object); }
/** * @param \Magento\Framework\DataObject $object * @return $this */ public function deleteChildren(\Magento\Framework\DataObject $object) { $adapter = $this->getConnection(); $pathField = $adapter->quoteIdentifier('path'); $select = $adapter->select()->from($this->getMainTable(), ['category_id'])->where($pathField . ' LIKE :c_path'); $childrenIds = $adapter->fetchCol($select, ['c_path' => $object->getPath() . '/%']); if (!empty($childrenIds)) { $adapter->delete($this->getMainTable(), ['category_id IN (?)' => $childrenIds]); } /** * Add deleted children ids to object * This data can be used in after delete event */ $object->setDeletedChildrenIds($childrenIds); return $this; }
/** * Prepare category parentId * * @param \Magento\Framework\DataObject $category * @return $this */ protected function _prepareCategoryParentId(\Magento\Framework\DataObject $category) { if ($category->getPath() != $category->getId()) { $split = explode('/', $category->getPath()); $category->setParentId($split[count($split) - 2]); } else { $category->setParentId(0); } return $this; }
/** * {@inheritdoc} */ protected function _afterSave(DataObject $object) { /** @var \Mirasvit\Blog\Model\Category $object */ if (substr($object->getPath(), -1) == '/' || !$object->getPath()) { $object->setPath($object->getPath() . $object->getId()); $this->savePath($object); } if ($object->dataHasChangedFor('parent_id')) { $newParent = \Magento\Framework\App\ObjectManager::getInstance()->create('Mirasvit\\Blog\\Model\\Category')->load($object->getParentId()); $this->changeParent($object, $newParent); } return parent::_afterSave($object); }