NoRouteHandler.php 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. <?php
  2. /**
  3. * Default no route handler
  4. *
  5. * Copyright © Magento, Inc. All rights reserved.
  6. * See COPYING.txt for license details.
  7. */
  8. namespace Magento\Framework\App\Router;
  9. class NoRouteHandler implements \Magento\Framework\App\Router\NoRouteHandlerInterface
  10. {
  11. /**
  12. * @var \Magento\Framework\App\Config\ScopeConfigInterface
  13. */
  14. protected $_config;
  15. /**
  16. * @param \Magento\Framework\App\Config\ScopeConfigInterface $config
  17. */
  18. public function __construct(\Magento\Framework\App\Config\ScopeConfigInterface $config)
  19. {
  20. $this->_config = $config;
  21. }
  22. /**
  23. * Check and process no route request
  24. *
  25. * @param \Magento\Framework\App\RequestInterface $request
  26. * @return bool
  27. * @SuppressWarnings(PHPMD.NPathComplexity)
  28. */
  29. public function process(\Magento\Framework\App\RequestInterface $request)
  30. {
  31. $noRoutePath = $this->_config->getValue('web/default/no_route', 'default');
  32. if ($noRoutePath) {
  33. $noRoute = explode('/', $noRoutePath);
  34. } else {
  35. $noRoute = [];
  36. }
  37. $moduleName = isset($noRoute[0]) ? $noRoute[0] : 'core';
  38. $actionPath = isset($noRoute[1]) ? $noRoute[1] : 'index';
  39. $actionName = isset($noRoute[2]) ? $noRoute[2] : 'index';
  40. $request->setModuleName($moduleName)->setControllerName($actionPath)->setActionName($actionName);
  41. return true;
  42. }
  43. }