/** * Before save handler * * @param \Magento\Cms\Model\ResourceModel\Page $subject * @param \Magento\Framework\Model\AbstractModel $object * * @return void * @SuppressWarnings(PHPMD.UnusedFormalParameter) */ public function beforeSave(\Magento\Cms\Model\ResourceModel\Page $subject, \Magento\Framework\Model\AbstractModel $object) { /** @var $object \Magento\Cms\Model\Page */ $urlKey = $object->getData('identifier'); if ($urlKey === '' || $urlKey === null) { $object->setData('identifier', $this->cmsPageUrlPathGenerator->generateUrlKey($object)); } }
/** * Form post init * * @param \Magento\Framework\Data\Form $form * @return \Magento\UrlRewrite\Block\Cms\Page\Edit\Form */ protected function _formPostInit($form) { $cmsPage = $this->_getCmsPage(); $form->setAction($this->_adminhtmlData->getUrl('adminhtml/*/save', ['id' => $this->_getModel()->getId(), 'cms_page' => $cmsPage->getId()])); // Fill request path and target path elements /** @var $requestPath \Magento\Framework\Data\Form\Element\AbstractElement */ $requestPath = $this->getForm()->getElement('request_path'); /** @var $targetPath \Magento\Framework\Data\Form\Element\AbstractElement */ $targetPath = $this->getForm()->getElement('target_path'); $model = $this->_getModel(); if (!$model->getId()) { $sessionData = $this->_getSessionData(); if (!isset($sessionData['request_path'])) { $requestPath->setValue($this->cmsPageUrlPathGenerator->getUrlPath($cmsPage)); } $targetPath->setValue($this->cmsPageUrlPathGenerator->getCanonicalUrlPath($cmsPage)); } $targetPath->setData('disabled', true); return $this; }
/** * Override URL rewrite data, basing on current CMS page * * @param \Magento\UrlRewrite\Model\UrlRewrite $model * @return void */ private function _handleCmsPageUrlRewrite($model) { $cmsPage = $this->_getCmsPage(); if ($cmsPage->getId()) { if ($model->isObjectNew()) { $model->setEntityType(self::ENTITY_TYPE_CMS_PAGE)->setEntityId($cmsPage->getId()); } if ($model->getRedirectType() && !$model->getIsAutogenerated()) { $targetPath = $this->cmsPageUrlPathGenerator->getUrlPath($cmsPage); } else { $targetPath = $this->cmsPageUrlPathGenerator->getCanonicalUrlPath($cmsPage); } $model->setTargetPath($targetPath); } }
/** * Create url rewrite object * * @param int $storeId * @param int $redirectType * @return \Magento\UrlRewrite\Service\V1\Data\UrlRewrite */ protected function createUrlRewrite($storeId, $redirectType = 0) { return $this->urlRewriteFactory->create()->setStoreId($storeId)->setEntityType(self::ENTITY_TYPE)->setEntityId($this->cmsPage->getId())->setRequestPath($this->cmsPage->getIdentifier())->setTargetPath($this->cmsPageUrlPathGenerator->getCanonicalUrlPath($this->cmsPage))->setIsAutogenerated(1)->setRedirectType($redirectType); }