瀏覽代碼

optimize the handling of inexistent website

Olivier Massot 4 年之前
父節點
當前提交
beb71fb01c
共有 1 個文件被更改,包括 12 次插入1 次删除
  1. 12 1
      ot_optimizer/Classes/XClass/Frontend/Middleware/OtSiteResolver.php

+ 12 - 1
ot_optimizer/Classes/XClass/Frontend/Middleware/OtSiteResolver.php

@@ -2,12 +2,15 @@
 declare(strict_types = 1);
 namespace Opentalent\OtOptimizer\XClass\Frontend\Middleware;
 
+use Opentalent\OtCore\Exception\NoSuchWebsiteException;
 use Opentalent\OtOptimizer\Routing\SiteMatcher;
 use Psr\Http\Message\ResponseInterface;
 use Psr\Http\Message\ServerRequestInterface;
 use Psr\Http\Server\RequestHandlerInterface;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
 use TYPO3\CMS\Extbase\Object\ObjectManager;
+use TYPO3\CMS\Frontend\Controller\ErrorController;
+use TYPO3\CMS\Frontend\Page\PageAccessFailureReasons;
 
 /**
  *
@@ -39,7 +42,15 @@ class OtSiteResolver extends \TYPO3\CMS\Frontend\Middleware\SiteResolver
         }
 
         $matcher = GeneralUtility::makeInstance(ObjectManager::class)->get(SiteMatcher::class);
-        $routeResult = $matcher->matchRequest($request);
+        try {
+            $routeResult = $matcher->matchRequest($request);
+        } catch (NoSuchWebsiteException $e) {
+            return GeneralUtility::makeInstance(ErrorController::class)->pageNotFoundAction(
+                $request,
+                'The requested website does not exist',
+                ['code' => PageAccessFailureReasons::PAGE_NOT_FOUND]
+            );
+        }
 
         $request = $request->withAttribute('site', $routeResult->getSite());
         $request = $request->withAttribute('language', $routeResult->getLanguage());