Переглянути джерело

implements new page error handler

Olivier Massot 5 роки тому
батько
коміт
ffff52049b
1 змінених файлів з 24 додано та 15 видалено
  1. 24 15
      ot_templating/Classes/Page/ErrorHandler.php

+ 24 - 15
ot_templating/Classes/Page/ErrorHandler.php

@@ -23,6 +23,8 @@ class ErrorHandler implements PageErrorHandlerInterface
         500 => self::TEMPLATES_ROOT_PATHS . '/Page/Error/500.html'
     ];
 
+    const REDIRECT_FALLBACK = 'https://opentalent.fr';
+
     /**
      * Status code of the response
      * @var int
@@ -80,23 +82,30 @@ class ErrorHandler implements PageErrorHandlerInterface
             $rootUid = $site->getRootPageId();
 
             $rootPage = $pageRepository->getPage($rootUid);
-            $title = $rootPage['title'];
-
-            $subPages = $pageRepository->getAllSubpagesForPage($rootUid, true);
-            foreach ($subPages as $page) {
-                if ($page['slug'] == '/page-introuvable') {
-
-                    $errorHandler = GeneralUtility::makeInstance(
-                        PageContentErrorHandler::class,
-                        $this->statusCode,
-                        [
-                            'errorHandler' => 'Page',
-                            'errorContentSource' => 't3://page?uid=' . $page['uid']
-                        ]
-                    );
-                    return $errorHandler->handlePageError($request, $message, $reasons);
+            if (!empty($rootPage)) {
+
+                $title = $rootPage['title'];
+
+                $subPages = $pageRepository->getAllSubpagesForPage($rootUid, true);
+                foreach ($subPages as $page) {
+                    if ($page['slug'] == '/page-introuvable') {
+
+                        $errorHandler = GeneralUtility::makeInstance(
+                            PageContentErrorHandler::class,
+                            $this->statusCode,
+                            [
+                                'errorHandler' => 'Page',
+                                'errorContentSource' => 't3://page?uid=' . $page['uid']
+                            ]
+                        );
+                        return $errorHandler->handlePageError($request, $message, $reasons);
+                    }
                 }
+            } else {
+                $title = "Page inexistante";
+                $homeUri = self::REDIRECT_FALLBACK;
             }
+
         }
 
         // At this point, the site has not been determined or