Edit.php 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. <?php
  2. /**
  3. *
  4. * Copyright © Magento, Inc. All rights reserved.
  5. * See COPYING.txt for license details.
  6. */
  7. namespace Magento\Search\Controller\Adminhtml\Synonyms;
  8. class Edit extends \Magento\Backend\App\Action
  9. {
  10. /**
  11. * Authorization level of a basic admin session
  12. *
  13. * @see _isAllowed()
  14. */
  15. const ADMIN_RESOURCE = 'Magento_Search::synonyms';
  16. /**
  17. * @var \Magento\Framework\Registry $registry
  18. */
  19. private $registry;
  20. /**
  21. * @var \Magento\Search\Controller\Adminhtml\Synonyms\ResultPageBuilder $pageBuilder
  22. */
  23. private $pageBuilder;
  24. /**
  25. * @var \Magento\Search\Api\SynonymGroupRepositoryInterface $synGroupRepository
  26. */
  27. private $synGroupRepository;
  28. /**
  29. * Edit constructor.
  30. *
  31. * @param \Magento\Backend\App\Action\Context $context
  32. * @param \Magento\Framework\Registry $registry
  33. * @param \Magento\Search\Controller\Adminhtml\Synonyms\ResultPageBuilder $pageBuilder
  34. * @param \Magento\Search\Api\SynonymGroupRepositoryInterface $synGroupRepository
  35. */
  36. public function __construct(
  37. \Magento\Backend\App\Action\Context $context,
  38. \Magento\Framework\Registry $registry,
  39. \Magento\Search\Controller\Adminhtml\Synonyms\ResultPageBuilder $pageBuilder,
  40. \Magento\Search\Api\SynonymGroupRepositoryInterface $synGroupRepository
  41. ) {
  42. $this->registry = $registry;
  43. $this->synGroupRepository = $synGroupRepository;
  44. $this->pageBuilder = $pageBuilder;
  45. parent::__construct($context);
  46. }
  47. /**
  48. * Edit Synonym Group
  49. *
  50. * @return \Magento\Framework\Controller\ResultInterface
  51. * @SuppressWarnings(PHPMD.NPathComplexity)
  52. */
  53. public function execute()
  54. {
  55. // 1. Get ID and create model
  56. $groupId = $this->getRequest()->getParam('group_id');
  57. /** @var \Magento\Search\Api\Data\SynonymGroupInterface $synGroup */
  58. $synGroup = $this->synGroupRepository->get($groupId);
  59. // 2. Initial checking
  60. if ($groupId && (!$synGroup->getGroupId())) {
  61. $this->messageManager->addErrorMessage(__('This synonyms group no longer exists.'));
  62. /** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */
  63. $resultRedirect = $this->resultRedirectFactory->create();
  64. return $resultRedirect->setPath('*/*/');
  65. }
  66. // 3. Set entered data if was error when we do save
  67. $data = $this->_session->getFormData(true);
  68. if (!empty($data)) {
  69. $synGroup->setGroupId($data['group_id']);
  70. $synGroup->setStoreId($data['store_id']);
  71. $synGroup->setWebsiteId($data['website_id']);
  72. $synGroup->setSynonymGroup($data['synonyms']);
  73. }
  74. // 4. Register model to use later in save
  75. $this->registry->register(
  76. \Magento\Search\Controller\RegistryConstants::SEARCH_SYNONYMS,
  77. $synGroup
  78. );
  79. // 5. Build edit synonyms group form
  80. $resultPage = $this->pageBuilder->build();
  81. $resultPage->addBreadcrumb(
  82. $groupId ? __('Edit Synonym Group') : __('New Synonym Group'),
  83. $groupId ? __('Edit Synonym Group') : __('New Synonym Group')
  84. );
  85. $resultPage->getConfig()->getTitle()->prepend(__('Synonym Group'));
  86. $resultPage->getConfig()->getTitle()->prepend(
  87. $synGroup->getGroupId() ? $synGroup->getSynonymGroup() : __('New Synonym Group')
  88. );
  89. return $resultPage;
  90. }
  91. }