Edit.php 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. <?php
  2. /**
  3. *
  4. * Copyright © Magento, Inc. All rights reserved.
  5. * See COPYING.txt for license details.
  6. */
  7. namespace Magento\UrlRewrite\Controller\Adminhtml\Url\Rewrite;
  8. use Magento\Framework\App\Action\HttpGetActionInterface as HttpGetActionInterface;
  9. class Edit extends \Magento\UrlRewrite\Controller\Adminhtml\Url\Rewrite implements HttpGetActionInterface
  10. {
  11. /**#@+
  12. * Modes
  13. */
  14. const ID_MODE = 'id';
  15. const PRODUCT_MODE = 'product';
  16. const CATEGORY_MODE = 'category';
  17. const CMS_PAGE_MODE = 'cms_page';
  18. /**#@-*/
  19. /**
  20. * Get current mode
  21. *
  22. * @return string
  23. */
  24. protected function _getMode()
  25. {
  26. if ($this->_getProduct()->getId() || $this->getRequest()->has('product')) {
  27. $mode = self::PRODUCT_MODE;
  28. } elseif ($this->_getCategory()->getId() || $this->getRequest()->has('category')) {
  29. $mode = self::CATEGORY_MODE;
  30. } elseif ($this->_getCmsPage()->getId() || $this->getRequest()->has('cms_page')) {
  31. $mode = self::CMS_PAGE_MODE;
  32. } elseif ($this->getRequest()->has('id')) {
  33. $mode = self::ID_MODE;
  34. } else {
  35. $mode = $this->_objectManager->get(\Magento\UrlRewrite\Block\Selector::class)->getDefaultMode();
  36. }
  37. return $mode;
  38. }
  39. /**
  40. * Show urlrewrite edit/create page
  41. *
  42. * @return void
  43. */
  44. public function execute()
  45. {
  46. $this->_view->loadLayout();
  47. $this->_setActiveMenu('Magento_UrlRewrite::urlrewrite');
  48. $mode = $this->_getMode();
  49. switch ($mode) {
  50. case self::PRODUCT_MODE:
  51. $editBlock = $this->_view->getLayout()->createBlock(
  52. \Magento\UrlRewrite\Block\Catalog\Product\Edit::class,
  53. '',
  54. [
  55. 'data' => [
  56. 'category' => $this->_getCategory(),
  57. 'product' => $this->_getProduct(),
  58. 'is_category_mode' => $this->getRequest()->has('category'),
  59. 'url_rewrite' => $this->_getUrlRewrite(),
  60. ]
  61. ]
  62. );
  63. break;
  64. case self::CATEGORY_MODE:
  65. $editBlock = $this->_view->getLayout()->createBlock(
  66. \Magento\UrlRewrite\Block\Catalog\Category\Edit::class,
  67. '',
  68. [
  69. 'data' => ['category' => $this->_getCategory(), 'url_rewrite' => $this->_getUrlRewrite()]
  70. ]
  71. );
  72. break;
  73. case self::CMS_PAGE_MODE:
  74. $editBlock = $this->_view->getLayout()->createBlock(
  75. \Magento\UrlRewrite\Block\Cms\Page\Edit::class,
  76. '',
  77. [
  78. 'data' => ['cms_page' => $this->_getCmsPage(), 'url_rewrite' => $this->_getUrlRewrite()]
  79. ]
  80. );
  81. break;
  82. case self::ID_MODE:
  83. default:
  84. $editBlock = $this->_view->getLayout()->createBlock(
  85. \Magento\UrlRewrite\Block\Edit::class,
  86. '',
  87. ['data' => ['url_rewrite' => $this->_getUrlRewrite()]]
  88. );
  89. break;
  90. }
  91. $this->_view->getPage()->getConfig()->getTitle()->prepend($editBlock->getHeaderText());
  92. $this->_addContent($editBlock);
  93. $this->_view->renderLayout();
  94. }
  95. }