recordArray($item); // v14: StandaloneView was removed - views come from the ViewFactory. $view = GeneralUtility::makeInstance(\TYPO3\CMS\Core\View\ViewFactoryInterface::class) ->create(new \TYPO3\CMS\Core\View\ViewFactoryData( templatePathAndFilename: 'EXT:vitec/Resources/Private/Templates/Preview/Usecaseshow.html', request: $GLOBALS['TYPO3_REQUEST'] ?? null, )); // Parse FlexForm data $flexFormService = GeneralUtility::makeInstance(FlexFormService::class); $flexFormData = $flexFormService->convertFlexFormContentToArray($record['pi_flexform'] ?? ''); // Get usecase data if selected $usecaseData = null; $usecaseUid = (int)($flexFormData['settings']['usecase'] ?? 0); if ($usecaseUid > 0) { $usecaseRepository = GeneralUtility::makeInstance(UsecaseRepository::class); $usecase = $usecaseRepository->findByUid($usecaseUid); if ($usecase) { $usecaseData = [ 'uid' => $usecase->getUid(), 'title' => $usecase->getTitle(), 'subtitle' => $usecase->getSubtitle(), 'description' => $usecase->getDescription() ]; } } // Get layout setting $layout = $flexFormData['settings']['layout'] ?? 'default'; // Assign variables to view $view->assignMultiple([ 'record' => $record, 'flexFormData' => $flexFormData, 'usecase' => $usecaseData, 'layout' => $layout, 'pluginName' => 'Usecaseshow' ]); return $view->render(); } /** * @param GridColumnItem $item * @return string */ public function renderPageModulePreviewHeader(GridColumnItem $item): string { $record = $this->recordArray($item); // Parse FlexForm to get usecase info for header $flexFormService = GeneralUtility::makeInstance(FlexFormService::class); $flexFormData = $flexFormService->convertFlexFormContentToArray($record['pi_flexform'] ?? ''); $usecaseUid = (int)($flexFormData['settings']['usecase'] ?? 0); if ($usecaseUid > 0) { return '🎯 Usecase Show Plugin (Usecase ID: ' . $usecaseUid . ')'; } return '🎯 Usecase Show Plugin (No usecase selected)'; } /** * v14: GridColumnItem::getRecord() returns a Domain\Record object, no * longer an array (found 2026-10-02 - crashed the page module preview). * Normalizes both shapes to the raw database array. * * @return array */ private function recordArray(GridColumnItem $item): array { $record = $item->getRecord(); if ($record instanceof \TYPO3\CMS\Core\Domain\Record) { $raw = $record->getRawRecord(); return $raw !== null ? $raw->toArray() : []; } return (array)$record; } }