Index.php 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Cms\Controller\Index;
  7. use Magento\Framework\App\Action\HttpPostActionInterface;
  8. use Magento\Framework\App\Action\HttpGetActionInterface;
  9. use Magento\Framework\App\Action\Context;
  10. use Magento\Framework\App\Config\ScopeConfigInterface;
  11. use Magento\Framework\App\ObjectManager;
  12. use Magento\Framework\App\ResponseInterface;
  13. use Magento\Framework\Controller\ResultInterface;
  14. use Magento\Framework\Controller\Result\Forward;
  15. use Magento\Framework\Controller\Result\ForwardFactory;
  16. use Magento\Framework\View\Result\Page as ResultPage;
  17. use Magento\Cms\Helper\Page;
  18. use Magento\Store\Model\ScopeInterface;
  19. use Magento\Framework\App\Action\Action;
  20. /**
  21. * Home page. Needs to be accessible by POST because of the store switching.
  22. */
  23. class Index extends Action implements HttpGetActionInterface, HttpPostActionInterface
  24. {
  25. /**
  26. * @var ForwardFactory
  27. */
  28. protected $resultForwardFactory;
  29. /**
  30. * @var ScopeConfigInterface
  31. */
  32. private $scopeConfig;
  33. /**
  34. * @var Page
  35. */
  36. private $page;
  37. /**
  38. * Index constructor.
  39. *
  40. * @param Context $context
  41. * @param ForwardFactory $resultForwardFactory
  42. * @param ScopeConfigInterface|null $scopeConfig
  43. * @param Page|null $page
  44. */
  45. public function __construct(
  46. Context $context,
  47. ForwardFactory $resultForwardFactory,
  48. ScopeConfigInterface $scopeConfig = null,
  49. Page $page = null
  50. ) {
  51. $this->resultForwardFactory = $resultForwardFactory;
  52. $this->scopeConfig = $scopeConfig ? : ObjectManager::getInstance()->get(ScopeConfigInterface::class);
  53. $this->page = $page ? : ObjectManager::getInstance()->get(Page::class);
  54. parent::__construct($context);
  55. }
  56. /**
  57. * Renders CMS Home page
  58. *
  59. * @param string|null $coreRoute
  60. *
  61. * @return bool|ResponseInterface|Forward|ResultInterface|ResultPage
  62. *
  63. * @SuppressWarnings(PHPMD.UnusedFormalParameter)
  64. */
  65. public function execute($coreRoute = null)
  66. {
  67. $pageId = $this->scopeConfig->getValue(Page::XML_PATH_HOME_PAGE, ScopeInterface::SCOPE_STORE);
  68. $resultPage = $this->page->prepareResultPage($this, $pageId);
  69. if (!$resultPage) {
  70. /** @var Forward $resultForward */
  71. $resultForward = $this->resultForwardFactory->create();
  72. $resultForward->forward('defaultIndex');
  73. return $resultForward;
  74. }
  75. return $resultPage;
  76. }
  77. }