Suggest.php 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Search\Controller\Ajax;
  7. use Magento\Framework\App\Action\HttpGetActionInterface as HttpGetActionInterface;
  8. use Magento\Framework\App\Action\Action;
  9. use Magento\Framework\App\Action\Context;
  10. use Magento\Search\Model\AutocompleteInterface;
  11. use Magento\Framework\Controller\ResultFactory;
  12. class Suggest extends Action implements HttpGetActionInterface
  13. {
  14. /**
  15. * @var \Magento\Search\Model\AutocompleteInterface
  16. */
  17. private $autocomplete;
  18. /**
  19. * @param \Magento\Framework\App\Action\Context $context
  20. * @param \Magento\Search\Model\AutocompleteInterface $autocomplete
  21. */
  22. public function __construct(
  23. Context $context,
  24. AutocompleteInterface $autocomplete
  25. ) {
  26. $this->autocomplete = $autocomplete;
  27. parent::__construct($context);
  28. }
  29. /**
  30. * @return \Magento\Framework\Controller\ResultInterface
  31. */
  32. public function execute()
  33. {
  34. if (!$this->getRequest()->getParam('q', false)) {
  35. /** @var \Magento\Framework\Controller\Result\Redirect $resultRedirect */
  36. $resultRedirect = $this->resultFactory->create(ResultFactory::TYPE_REDIRECT);
  37. $resultRedirect->setUrl($this->_url->getBaseUrl());
  38. return $resultRedirect;
  39. }
  40. $autocompleteData = $this->autocomplete->getItems();
  41. $responseData = [];
  42. foreach ($autocompleteData as $resultItem) {
  43. $responseData[] = $resultItem->toArray();
  44. }
  45. /** @var \Magento\Framework\Controller\Result\Json $resultJson */
  46. $resultJson = $this->resultFactory->create(ResultFactory::TYPE_JSON);
  47. $resultJson->setData($responseData);
  48. return $resultJson;
  49. }
  50. }