Index.php 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. <?php
  2. /**
  3. * Mageplaza
  4. *
  5. * NOTICE OF LICENSE
  6. *
  7. * This source file is subject to the Mageplaza.com license that is
  8. * available through the world-wide-web at this URL:
  9. * https://www.mageplaza.com/LICENSE.txt
  10. *
  11. * DISCLAIMER
  12. *
  13. * Do not edit or add to this file if you wish to upgrade this extension to newer
  14. * version in the future.
  15. *
  16. * @category Mageplaza
  17. * @package Mageplaza_AjaxLayer
  18. * @copyright Copyright (c) Mageplaza (http://www.mageplaza.com/)
  19. * @license https://www.mageplaza.com/LICENSE.txt
  20. */
  21. namespace Mageplaza\AjaxLayer\Controller\Search\Result;
  22. use Magento\Catalog\Model\Layer\Resolver;
  23. use Magento\Catalog\Model\Session;
  24. use Magento\CatalogSearch\Helper\Data;
  25. use Magento\Framework\App\Action\Action;
  26. use Magento\Framework\App\Action\Context;
  27. use Magento\Framework\Json\Helper\Data as JsonData;
  28. use Magento\Search\Model\QueryFactory;
  29. use Magento\Store\Model\StoreManagerInterface;
  30. use Mageplaza\AjaxLayer\Helper\Data as HelperData;
  31. /**
  32. * Class Index
  33. * @package Mageplaza\LayeredNavigation\Controller\Search\Result
  34. */
  35. class Index extends Action
  36. {
  37. /**
  38. * Catalog session
  39. *
  40. * @var Session
  41. */
  42. protected $_catalogSession;
  43. /**
  44. * @var StoreManagerInterface
  45. */
  46. protected $_storeManager;
  47. /**
  48. * @type JsonData
  49. */
  50. protected $_jsonHelper;
  51. /**
  52. * @type \Mageplaza\LayeredNavigation\Helper\Data
  53. */
  54. protected $_moduleHelper;
  55. /**
  56. * @type Data
  57. */
  58. protected $_helper;
  59. /**
  60. * @var QueryFactory
  61. */
  62. private $_queryFactory;
  63. /**
  64. * Catalog Layer Resolver
  65. *
  66. * @var Resolver
  67. */
  68. private $layerResolver;
  69. /**
  70. * Index constructor.
  71. * @param Context $context
  72. * @param Session $catalogSession
  73. * @param StoreManagerInterface $storeManager
  74. * @param QueryFactory $queryFactory
  75. * @param Resolver $layerResolver
  76. * @param Data $helper
  77. * @param JsonData $jsonHelper
  78. * @param HelperData $moduleHelper
  79. */
  80. public function __construct(
  81. Context $context,
  82. Session $catalogSession,
  83. StoreManagerInterface $storeManager,
  84. QueryFactory $queryFactory,
  85. Resolver $layerResolver,
  86. Data $helper,
  87. JsonData $jsonHelper,
  88. HelperData $moduleHelper
  89. )
  90. {
  91. $this->_storeManager = $storeManager;
  92. $this->_catalogSession = $catalogSession;
  93. $this->_queryFactory = $queryFactory;
  94. $this->layerResolver = $layerResolver;
  95. $this->_jsonHelper = $jsonHelper;
  96. $this->_moduleHelper = $moduleHelper;
  97. $this->_helper = $helper;
  98. parent::__construct($context);
  99. }
  100. /**
  101. * @return \Magento\Framework\App\ResponseInterface|\Magento\Framework\Controller\ResultInterface|void
  102. * @throws \Magento\Framework\Exception\LocalizedException
  103. */
  104. public function execute()
  105. {
  106. $this->layerResolver->create(Resolver::CATALOG_LAYER_SEARCH);
  107. /* @var $query \Magento\Search\Model\Query */
  108. $query = $this->_queryFactory->get();
  109. $query->setStoreId($this->_storeManager->getStore()->getId());
  110. if ($query->getQueryText() != '') {
  111. if ($this->_helper->isMinQueryLength()) {
  112. $query->setId(0)->setIsActive(1)->setIsProcessed(1);
  113. } else {
  114. $query->saveIncrementalPopularity();
  115. if ($query->getRedirect()) {
  116. $this->getResponse()->setRedirect($query->getRedirect());
  117. return;
  118. }
  119. }
  120. $this->_helper->checkNotes();
  121. $this->_view->loadLayout();
  122. if ($this->_moduleHelper->ajaxEnabled() && $this->getRequest()->isAjax()) {
  123. $navigation = $this->_view->getLayout()->getBlock('catalogsearch.leftnav');
  124. $products = $this->_view->getLayout()->getBlock('search.result');
  125. $result = [
  126. 'products' => $products->toHtml(),
  127. 'navigation' => $navigation->toHtml()
  128. ];
  129. $this->getResponse()->representJson($this->_jsonHelper->jsonEncode($result));
  130. } else {
  131. $this->_view->renderLayout();
  132. }
  133. } else {
  134. $this->getResponse()->setRedirect($this->_redirect->getRedirectUrl());
  135. }
  136. }
  137. }