46 parent::__construct(
$cObj);
47 $this->contentDataProcessor = GeneralUtility::makeInstance(ContentDataProcessor::class);
86 public function render($conf = [])
91 if (!is_array($conf)) {
102 $variables = $this->contentDataProcessor->process($this->cObj, $conf, $variables);
104 $this->view->assignMultiple($variables);
110 $this->view = $parentView;
122 $headerAssets = $this->view->renderSection(
'HeaderAssets', [
'contentObject' => $this],
true);
123 $footerAssets = $this->view->renderSection(
'FooterAssets', [
'contentObject' => $this],
true);
124 if (!empty(trim($headerAssets))) {
127 if (!empty(trim($footerAssets))) {
141 $this->view = GeneralUtility::makeInstance(StandaloneView::class);
154 (!empty($conf[
'templateName']) || !empty($conf[
'templateName.']))
155 && !empty($conf[
'templateRootPaths.']) && is_array($conf[
'templateRootPaths.'])
158 $this->view->setTemplateRootPaths($templateRootPaths);
159 $templateName = isset($conf[
'templateName.'])
160 ? $this->cObj->stdWrap($conf[
'templateName'] ??
'', $conf[
'templateName.'])
161 : $conf[
'templateName'];
162 $this->view->setTemplate($templateName);
163 } elseif (!empty($conf[
'template']) && !empty($conf[
'template.'])) {
165 $templateSource = $this->cObj->cObjGetSingle($conf[
'template'], $conf[
'template.'],
'template');
166 if ($templateSource ===
'') {
168 'Could not find template source for ' . $conf[
'template'],
172 $this->view->setTemplateSource($templateSource);
175 $file = isset($conf[
'file.'])
176 ? $this->cObj->stdWrap($conf[
'file'] ??
'', $conf[
'file.'])
177 : ($conf[
'file'] ??
'');
179 $templatePathAndFilename = GeneralUtility::getFileAbsFileName($file);
180 $this->view->setTemplatePathAndFilename($templatePathAndFilename);
193 if (isset($conf[
'layoutRootPath']) || isset($conf[
'layoutRootPath.'])) {
194 $layoutRootPath = isset($conf[
'layoutRootPath.'])
195 ? $this->cObj->stdWrap($conf[
'layoutRootPath'], $conf[
'layoutRootPath.'])
196 : $conf[
'layoutRootPath'];
197 $layoutPaths[] = GeneralUtility::getFileAbsFileName($layoutRootPath);
199 if (isset($conf[
'layoutRootPaths.'])) {
202 if (!empty($layoutPaths)) {
203 $this->view->setLayoutRootPaths($layoutPaths);
215 if (isset($conf[
'partialRootPath']) || isset($conf[
'partialRootPath.'])) {
216 $partialRootPath = isset($conf[
'partialRootPath.'])
217 ? $this->cObj->stdWrap($conf[
'partialRootPath'], $conf[
'partialRootPath.'])
218 : $conf[
'partialRootPath'];
219 $partialPaths[] = GeneralUtility::getFileAbsFileName($partialRootPath);
221 if (isset($conf[
'partialRootPaths.'])) {
224 if (!empty($partialPaths)) {
225 $this->view->setPartialRootPaths($partialPaths);
236 $format = isset($conf[
'format.'])
237 ? $this->cObj->stdWrap($conf[
'format'] ??
'', $conf[
'format.'])
238 : ($conf[
'format'] ??
'');
240 $this->view->setFormat($format);
252 $requestPluginName = isset($conf[
'extbase.'][
'pluginName.'])
253 ? $this->cObj->stdWrap($conf[
'extbase.'][
'pluginName'] ??
'', $conf[
'extbase.'][
'pluginName.'])
254 : ($conf[
'extbase.'][
'pluginName'] ??
'');
255 if ($requestPluginName) {
256 $this->view->getRequest()->setPluginName($requestPluginName);
258 $requestControllerExtensionName = isset($conf[
'extbase.'][
'controllerExtensionName.'])
259 ? $this->cObj->stdWrap($conf[
'extbase.'][
'controllerExtensionName'] ??
'', $conf[
'extbase.'][
'controllerExtensionName.'])
260 : ($conf[
'extbase.'][
'controllerExtensionName'] ??
'');
261 if ($requestControllerExtensionName) {
262 $this->view->getRequest()->setControllerExtensionName($requestControllerExtensionName);
264 $requestControllerName = isset($conf[
'extbase.'][
'controllerName.'])
265 ? $this->cObj->stdWrap($conf[
'extbase.'][
'controllerName'] ??
'', $conf[
'extbase.'][
'controllerName.'])
266 : ($conf[
'extbase.'][
'controllerName'] ??
'');
267 if ($requestControllerName) {
268 $this->view->getRequest()->setControllerName($requestControllerName);
270 $requestControllerActionName = isset($conf[
'extbase.'][
'controllerActionName.'])
271 ? $this->cObj->stdWrap($conf[
'extbase.'][
'controllerActionName'] ??
'', $conf[
'extbase.'][
'controllerActionName.'])
272 : ($conf[
'extbase.'][
'controllerActionName'] ??
'');
273 if ($requestControllerActionName) {
274 $this->view->getRequest()->setControllerActionName($requestControllerActionName);
279 && $requestControllerExtensionName
280 && $requestControllerName
281 && $requestControllerActionName
283 $configurationManager = GeneralUtility::makeInstance(ObjectManager::class)->get(ConfigurationManager::class);
284 $configurationManager->setConfiguration([
285 'extensionName' => $requestControllerExtensionName,
286 'pluginName' => $requestPluginName,
289 if (!isset(
$GLOBALS[
'TYPO3_CONF_VARS'][
'EXTCONF'][
'extbase'][
'extensions'][$requestControllerExtensionName][
'plugins'][$requestPluginName][
'controllers'])) {
290 $GLOBALS[
'TYPO3_CONF_VARS'][
'EXTCONF'][
'extbase'][
'extensions'][$requestControllerExtensionName][
'plugins'][$requestPluginName][
'controllers'] = [
291 $requestControllerName => [
293 $requestControllerActionName,
299 $requestBuilder = GeneralUtility::makeInstance(ObjectManager::class)->get(RequestBuilder::class);
300 $this->view->getRenderingContext()->getControllerContext()->setRequest($requestBuilder->build());
314 $reservedVariables = [
'data',
'current'];
316 $variablesToProcess = (array)($conf[
'variables.'] ?? []);
317 foreach ($variablesToProcess as $variableName => $cObjType) {
318 if (is_array($cObjType)) {
321 if (!in_array($variableName, $reservedVariables)) {
322 $variables[$variableName] = $this->cObj->cObjGetSingle($cObjType, $variablesToProcess[$variableName .
'.'],
'variables.' . $variableName);
324 throw new \InvalidArgumentException(
325 'Cannot use reserved name "' . $variableName .
'" as variable name in FLUIDTEMPLATE.',
330 $variables[
'data'] = $this->cObj->data;
331 $variables[
'current'] = $this->cObj->data[$this->cObj->currentValKey ??
null] ??
null;
343 if (isset($conf[
'settings.'])) {
345 $typoScriptService = GeneralUtility::makeInstance(TypoScriptService::class);
346 $settings = $typoScriptService->convertTypoScriptArrayToPlainArray($conf[
'settings.']);
347 $this->view->assign(
'settings', $settings);
358 return $this->view->render();
370 if (isset($conf[
'stdWrap.'])) {
371 $content = $this->cObj->stdWrap($content, $conf[
'stdWrap.']);
386 foreach ($paths as $key => $path) {
388 if (isset($paths[substr($key, 0, -1)])) {
391 $path = $this->cObj->stdWrap(
'', $path);
392 } elseif (isset($paths[$key .
'.'])) {
393 $path = $this->cObj->stdWrap($path, $paths[$key .
'.']);
395 $finalPaths[$key] = GeneralUtility::getFileAbsFileName($path);