Popup.php 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\GroupedProduct\Controller\Adminhtml\Edit;
  7. use Magento\Backend\App\AbstractAction;
  8. use Magento\Backend\App\Action\Context;
  9. use Magento\Framework\Registry;
  10. use Magento\Catalog\Model\ProductFactory;
  11. use Psr\Log\LoggerInterface;
  12. use Magento\Framework\Controller\ResultFactory;
  13. class Popup extends AbstractAction
  14. {
  15. /**
  16. * Authorization level of a basic admin session
  17. *
  18. * @see _isAllowed()
  19. */
  20. const ADMIN_RESOURCE = 'Magento_Catalog::products';
  21. /**
  22. * @var \Magento\Framework\Registry
  23. */
  24. protected $registry;
  25. /**
  26. * @var \Magento\Catalog\Model\ProductFactory
  27. */
  28. protected $factory;
  29. /**
  30. * @var \Psr\Log\LoggerInterface
  31. */
  32. protected $logger;
  33. /**
  34. * @param \Magento\Backend\App\Action\Context $context
  35. * @param \Magento\Framework\Registry $registry
  36. * @param \Magento\Catalog\Model\ProductFactory $factory
  37. * @param \Psr\Log\LoggerInterface $logger
  38. */
  39. public function __construct(
  40. Context $context,
  41. Registry $registry,
  42. ProductFactory $factory,
  43. LoggerInterface $logger
  44. ) {
  45. $this->registry = $registry;
  46. $this->factory = $factory;
  47. $this->logger = $logger;
  48. parent::__construct($context);
  49. }
  50. /**
  51. * Get associated grouped products grid popup
  52. *
  53. * @return \Magento\Framework\View\Result\Layout
  54. */
  55. public function execute()
  56. {
  57. $productId = (int)$this->getRequest()->getParam('id');
  58. /** @var $product \Magento\Catalog\Model\Product */
  59. $product = $this->factory->create();
  60. $product->setStoreId($this->getRequest()->getParam('store', 0));
  61. $typeId = $this->getRequest()->getParam('type');
  62. if (!$productId && $typeId) {
  63. $product->setTypeId($typeId);
  64. }
  65. $product->setData('_edit_mode', true);
  66. if ($productId) {
  67. try {
  68. $product->load($productId);
  69. } catch (\Exception $e) {
  70. $product->setTypeId(\Magento\Catalog\Model\Product\Type::DEFAULT_TYPE);
  71. $this->logger->critical($e);
  72. }
  73. }
  74. $setId = (int)$this->getRequest()->getParam('set');
  75. if ($setId) {
  76. $product->setAttributeSetId($setId);
  77. }
  78. $this->registry->register('current_product', $product);
  79. /** @var \Magento\Framework\View\Result\Layout $resultLayout */
  80. $resultLayout = $this->resultFactory->create(ResultFactory::TYPE_LAYOUT);
  81. return $resultLayout;
  82. }
  83. }