From 148c67aba5aa09ec1795c62c8d1b355c5dda90c2 Mon Sep 17 00:00:00 2001 From: David Steeb Date: Tue, 14 Apr 2026 12:28:04 +0200 Subject: [PATCH] [BUGFIX] Fix array access on RecordInterface in ContentPreviewRenderer for TYPO3 v14 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit In TYPO3 v14, GridColumnItem::getRecord() returns a RecordInterface object instead of an array. The previous code used array access syntax ($record['bodytext']) which throws "Cannot use object of type ... as array" when used without the null coalescing operator. Fix by detecting RecordInterface and using ->get() for v14+, keeping the original array access path for TYPO3 v10–v13 compatibility. --- Classes/Backend/Preview/ContentPreviewRenderer.php | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/Classes/Backend/Preview/ContentPreviewRenderer.php b/Classes/Backend/Preview/ContentPreviewRenderer.php index d6904fd..5b0c65c 100644 --- a/Classes/Backend/Preview/ContentPreviewRenderer.php +++ b/Classes/Backend/Preview/ContentPreviewRenderer.php @@ -13,14 +13,18 @@ */ use TYPO3\CMS\Backend\View\BackendLayout\Grid\GridColumnItem; +use TYPO3\CMS\Core\Domain\RecordInterface; class ContentPreviewRenderer extends \TYPO3\CMS\Backend\Preview\StandardContentPreviewRenderer { public function renderPageModulePreviewContent(GridColumnItem $item): string { $record = $item->getRecord(); - if (trim($record['bodytext'] ?? '') !== '') { - return $this->linkEditContent(nl2br(htmlentities($record['bodytext'])), $record) . '
'; + $bodytext = $record instanceof RecordInterface + ? (string)($record->get('bodytext') ?? '') + : (string)($record['bodytext'] ?? ''); + if (trim($bodytext) !== '') { + return $this->linkEditContent(nl2br(htmlentities($bodytext)), $record) . '
'; } return parent::renderPageModulePreviewContent($item); }