Send.php 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\SendFriend\Controller\Product;
  7. use Magento\Framework\App\Action\HttpGetActionInterface;
  8. use Magento\Framework\Controller\ResultFactory;
  9. /**
  10. * Controller class. Represents rendering and request flow
  11. */
  12. class Send extends \Magento\SendFriend\Controller\Product implements HttpGetActionInterface
  13. {
  14. /**
  15. * @var \Magento\Catalog\Model\Session
  16. */
  17. protected $catalogSession;
  18. /**
  19. * @param \Magento\Framework\App\Action\Context $context
  20. * @param \Magento\Framework\Registry $coreRegistry
  21. * @param \Magento\Framework\Data\Form\FormKey\Validator $formKeyValidator
  22. * @param \Magento\SendFriend\Model\SendFriend $sendFriend
  23. * @param \Magento\Catalog\Api\ProductRepositoryInterface $productRepository
  24. * @param \Magento\Catalog\Model\Session $catalogSession
  25. */
  26. public function __construct(
  27. \Magento\Framework\App\Action\Context $context,
  28. \Magento\Framework\Registry $coreRegistry,
  29. \Magento\Framework\Data\Form\FormKey\Validator $formKeyValidator,
  30. \Magento\SendFriend\Model\SendFriend $sendFriend,
  31. \Magento\Catalog\Api\ProductRepositoryInterface $productRepository,
  32. \Magento\Catalog\Model\Session $catalogSession
  33. ) {
  34. $this->catalogSession = $catalogSession;
  35. parent::__construct(
  36. $context,
  37. $coreRegistry,
  38. $formKeyValidator,
  39. $sendFriend,
  40. $productRepository
  41. );
  42. }
  43. /**
  44. * Show Send to a Friend Form
  45. *
  46. * @return \Magento\Framework\Controller\ResultInterface
  47. */
  48. public function execute()
  49. {
  50. $product = $this->_initProduct();
  51. if (!$product) {
  52. /** @var \Magento\Framework\Controller\Result\Forward $resultForward */
  53. $resultForward = $this->resultFactory->create(ResultFactory::TYPE_FORWARD);
  54. $resultForward->forward('noroute');
  55. return $resultForward;
  56. }
  57. if ($this->sendFriend->getMaxSendsToFriend() && $this->sendFriend->isExceedLimit()) {
  58. $this->messageManager->addNotice(
  59. __('You can\'t send messages more than %1 times an hour.', $this->sendFriend->getMaxSendsToFriend())
  60. );
  61. }
  62. /** @var \Magento\Framework\View\Result\Page $resultPage */
  63. $resultPage = $this->resultFactory->create(ResultFactory::TYPE_PAGE);
  64. $this->_eventManager->dispatch('sendfriend_product', ['product' => $product]);
  65. $data = $this->catalogSession->getSendfriendFormData();
  66. if ($data) {
  67. $this->catalogSession->setSendfriendFormData(true);
  68. $block = $resultPage->getLayout()->getBlock('sendfriend.send');
  69. if ($block) {
  70. /** @var \Magento\SendFriend\Block\Send $block */
  71. $block->setFormData($data);
  72. }
  73. }
  74. return $resultPage;
  75. }
  76. }