瀏覽代碼

add 404 handling in page resolver

Olivier Massot 4 年之前
父節點
當前提交
d3b210c314
共有 2 個文件被更改,包括 16 次插入3 次删除
  1. 3 2
      ot_core/ext_tables.sql
  2. 13 1
      ot_optimizer/Classes/XClass/Frontend/Middleware/OtPageResolver.php

+ 3 - 2
ot_core/ext_tables.sql

@@ -20,12 +20,13 @@ CREATE TABLE ot_websites
     subdomain VARCHAR(255) NOT NULL,
     custom_domain VARCHAR(255),
     locale VARCHAR(10) DEFAULT 'fr-FR',
-    config_identifier VARCHAR(45),
+    config_identifier VARCHAR(255),
     deleted tinyint(1) unsigned DEFAULT '0' NOT NULL,
 
     PRIMARY KEY (uid),
     KEY organization_id (organization_id),
-    KEY subdomain (subdomain)
+    KEY subdomain (subdomain),
+    KEY config_identifier (config_identifier)
 );
 
 #

+ 13 - 1
ot_optimizer/Classes/XClass/Frontend/Middleware/OtPageResolver.php

@@ -10,6 +10,8 @@ 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;
 
 class OtPageResolver extends \TYPO3\CMS\Frontend\Middleware\PageResolver
 {
@@ -39,7 +41,17 @@ class OtPageResolver extends \TYPO3\CMS\Frontend\Middleware\PageResolver
         $devMode = $_SERVER['TYPO3_CONTEXT'] == "Development";
 
         $params = $request->getQueryParams();
-        $params['id'] = $otWebsiteRepository->matchUriToPage($request->getUri(), $devMode);
+        $pageUid = $otWebsiteRepository->matchUriToPage($request->getUri(), $devMode);
+
+        if (!$pageUid > 0) {
+            return GeneralUtility::makeInstance(ErrorController::class)->pageNotFoundAction(
+                $request,
+                'The requested page does not exist',
+                ['code' => PageAccessFailureReasons::PAGE_NOT_FOUND]
+            );
+        }
+
+        $params['id'] = $pageUid;
         $request = $request->withQueryParams($params);
 
         return parent::process($request, $handler);