/** * Process group data before saving * * @param \Magento\Framework\Model\AbstractModel $object * @return $this * @throws \Magento\Framework\Exception\LocalizedException */ protected function _beforeSave(\Magento\Framework\Model\AbstractModel $object) { $connection = $this->getConnection(); $select = $connection->select()->from($this->getTable('ves_brand_group'), 'url_key')->where('url_key = ?', $object->getUrlKey())->where('group_id != ?', $object->getId()); $result = $connection->fetchCol($select); if (count($result) > 0) { throw new \Magento\Framework\Exception\LocalizedException(__('URL key already exists.' . count($result))); } return parent::_beforeSave($object); }
/** * Build category URL path * * @param \Magento\Catalog\Api\Data\CategoryInterface|\Magento\Framework\Model\AbstractModel $category * @return string */ public function getUrlPath($category) { if ($category->getParentId() == Category::TREE_ROOT_ID) { return ''; } $path = $category->getUrlPath(); if ($path !== null && !$category->dataHasChangedFor('url_key') && !$category->dataHasChangedFor('parent_id')) { return $path; } $path = $category->getUrlKey(); if ($path === false) { return $category->getUrlPath(); } if ($this->isNeedToGenerateUrlPathForParent($category)) { $parentPath = $this->getUrlPath($this->categoryRepository->get($category->getParentId())); $path = $parentPath === '' ? $path : $parentPath . '/' . $path; } return $path; }
protected function isPostUrlKeyUnique(\Magento\Framework\Model\AbstractModel $object) { $post_id = $this->checkUrlKey($object->getUrlKey()); return $post_id == $object->getData('post_id') || $post_id == null; }
/** * before save callback * * @param \Magento\Framework\Model\AbstractModel|\Mageplaza\Blog\Model\Topic $object * @return $this */ protected function _beforeSave(\Magento\Framework\Model\AbstractModel $object) { $object->setUpdatedAt($this->date->date()); if ($object->isObjectNew()) { $object->setCreatedAt($this->date->date()); } //Check Url Key if ($object->isObjectNew()) { $count = 0; $objName = $object->getName(); if ($object->getUrlKey()) { $urlKey = $object->getUrlKey(); } else { $urlKey = $this->generateUrlKey($objName, $count); } while ($this->checkUrlKey($urlKey)) { $count++; $urlKey = $this->generateUrlKey($urlKey, $count); } $object->setUrlKey($urlKey); } else { $objectId = $object->getId(); $count = 0; $objName = $object->getName(); if ($object->getUrlKey()) { $urlKey = $object->getUrlKey(); } else { $urlKey = $this->generateUrlKey($objName, $count); } while ($this->checkUrlKey($urlKey, $objectId)) { $count++; $urlKey = $this->generateUrlKey($urlKey, $count); } $object->setUrlKey($urlKey); } return parent::_beforeSave($object); }
public function checkUrlExits(\Magento\Framework\Model\AbstractModel $object) { $stores = $object->getStores(); $connection = $this->getConnection(); $select = $connection->select()->from($this->getTable('ves_brand'), 'brand_id')->where('url_key = ?', $object->getUrlKey())->where('brand_id != ?', $object->getId()); $brandIds = $connection->fetchCol($select); if (count($brandIds) > 0 && is_array($stores)) { if (in_array('0', $stores)) { throw new \Magento\Framework\Exception\LocalizedException(__('URL key for specified store already exists.')); } $stores[] = '0'; $select = $connection->select()->from($this->getTable('ves_brand_store'), 'brand_id')->where('brand_id IN (?)', $brandIds)->where('store_id IN (?)', $stores); $result = $connection->fetchCol($select); if (count($result) > 0) { throw new \Magento\Framework\Exception\LocalizedException(__('URL key for specified store already exists.')); } } return $this; }