Skip to content

Commit 8e71887

Browse files
committed
[TASK] Render preview Fluid exceptions in callout box
Fixes: #464 (cherry picked from commit 30a41b4)
1 parent 8ef4001 commit 8e71887

File tree

2 files changed

+22
-2
lines changed

2 files changed

+22
-2
lines changed

Classes/Backend/Preview/PageLayout.php

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
use TYPO3\CMS\Core\View\ViewFactoryData;
3434
use TYPO3\CMS\Core\View\ViewFactoryInterface;
3535
use TYPO3\CMS\Core\View\ViewInterface;
36+
use TYPO3Fluid\Fluid\Core\ViewHelper\Exception;
3637

3738
/**
3839
* @internal Not part of TYPO3's public API.
@@ -84,7 +85,16 @@ public function __invoke(ModifyPageLayoutContentEvent $event): void
8485
$view = $this->createView($contentTypeDefinition, $pageUid, $request);
8586
$view->assign('data', $contentBlockData);
8687
$view->assign('settings', $settings);
87-
$renderedView = $view->render();
88+
try {
89+
$renderedView = $view->render();
90+
} catch (Exception $exception) {
91+
$renderedView = '<div class="callout callout-danger">
92+
<div class="callout-content">
93+
<div class="callout-title">#' . $exception->getCode() . '</div>
94+
<div class="callout-body">' . $exception->getMessage() . '</div>
95+
</div>
96+
</div>';
97+
}
8898
$event->addHeaderContent($renderedView);
8999
}
90100

Classes/Backend/Preview/PreviewRenderer.php

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
use TYPO3\CMS\Core\View\ViewFactoryData;
3131
use TYPO3\CMS\Core\View\ViewFactoryInterface;
3232
use TYPO3\CMS\Core\View\ViewInterface;
33+
use TYPO3Fluid\Fluid\Core\ViewHelper\Exception;
3334
use TYPO3Fluid\Fluid\View\Exception\InvalidSectionException;
3435
use TYPO3Fluid\Fluid\View\Exception\InvalidTemplateResourceException;
3536

@@ -108,7 +109,16 @@ protected function renderPreview(GridColumnItem $item, string $section): string
108109
$view = $this->createView($request, $item, $section);
109110
$view->assign('data', $contentBlockData);
110111
$view->assign('settings', $settings);
111-
$result = $view->render();
112+
try {
113+
$result = $view->render();
114+
} catch (Exception $exception) {
115+
$result = '<div class="callout callout-danger">
116+
<div class="callout-content">
117+
<div class="callout-title">#' . $exception->getCode() . '</div>
118+
<div class="callout-body">' . $exception->getMessage() . '</div>
119+
</div>
120+
</div>';
121+
}
112122
$result = trim($result);
113123
return $result;
114124
}

0 commit comments

Comments
 (0)