2 namespace TYPO3\CMS\Frontend\ContentObject;
42 parent::__construct($cObj);
82 public function render($conf = array())
87 if (!is_array($conf)) {
92 $this->setTemplate($conf);
95 $this->setExtbaseVariables($conf);
96 $this->assignSettings($conf);
98 $variables = $this->contentDataProcessor->process($this->cObj, $conf, $variables);
100 $this->view->assignMultiple($variables);
105 $this->view = $parentView;
130 protected function setTemplate(array $conf)
134 (!empty($conf[
'templateName']) || !empty($conf[
'templateName.']))
135 && !empty($conf[
'templateRootPaths.']) && is_array($conf[
'templateRootPaths.'])
138 $this->view->setTemplateRootPaths($templateRootPaths);
139 $templateName = isset($conf[
'templateName.'])
140 ? $this->cObj->stdWrap(isset($conf[
'templateName']) ? $conf[
'templateName'] :
'', $conf[
'templateName.'])
141 : $conf[
'templateName'];
142 $this->view->setTemplate($templateName);
144 }
elseif (!empty($conf[
'template']) && !empty($conf[
'template.'])) {
145 $templateSource = $this->cObj->cObjGetSingle($conf[
'template'], $conf[
'template.']);
146 $this->view->setTemplateSource($templateSource);
149 $file = isset($conf[
'file.']) ? $this->cObj->stdWrap($conf[
'file'], $conf[
'file.']) : $conf[
'file'];
151 $templateService =
$GLOBALS[
'TSFE']->tmpl;
152 $templatePathAndFilename = $templateService->getFileName($file);
153 $this->view->setTemplatePathAndFilename(PATH_site . $templatePathAndFilename);
166 $layoutPaths = array();
167 if (isset($conf[
'layoutRootPath']) || isset($conf[
'layoutRootPath.'])) {
168 $layoutRootPath = isset($conf[
'layoutRootPath.'])
169 ? $this->cObj->stdWrap($conf[
'layoutRootPath'], $conf[
'layoutRootPath.'])
170 : $conf[
'layoutRootPath'];
173 if (isset($conf[
'layoutRootPaths.'])) {
176 if (!empty($layoutPaths)) {
177 $this->view->setLayoutRootPaths($layoutPaths);
189 $partialPaths = array();
190 if (isset($conf[
'partialRootPath']) || isset($conf[
'partialRootPath.'])) {
191 $partialRootPath = isset($conf[
'partialRootPath.'])
192 ? $this->cObj->stdWrap($conf[
'partialRootPath'], $conf[
'partialRootPath.'])
193 : $conf[
'partialRootPath'];
196 if (isset($conf[
'partialRootPaths.'])) {
199 if (!empty($partialPaths)) {
200 $this->view->setPartialRootPaths($partialPaths);
212 $format = isset($conf[
'format.']) ? $this->cObj->stdWrap($conf[
'format'], $conf[
'format.']) : $conf[
'format'];
214 $this->view->setFormat($format);
224 protected function setExtbaseVariables(array $conf)
227 $requestPluginName = isset($conf[
'extbase.'][
'pluginName.']) ? $this->cObj->stdWrap($conf[
'extbase.'][
'pluginName'], $conf[
'extbase.'][
'pluginName.']) : $conf[
'extbase.'][
'pluginName'];
228 if ($requestPluginName) {
229 $this->view->getRequest()->setPluginName($requestPluginName);
231 $requestControllerExtensionName = isset($conf[
'extbase.'][
'controllerExtensionName.']) ? $this->cObj->stdWrap($conf[
'extbase.'][
'controllerExtensionName'], $conf[
'extbase.'][
'controllerExtensionName.']) : $conf[
'extbase.'][
'controllerExtensionName'];
232 if ($requestControllerExtensionName) {
233 $this->view->getRequest()->setControllerExtensionName($requestControllerExtensionName);
235 $requestControllerName = isset($conf[
'extbase.'][
'controllerName.']) ? $this->cObj->stdWrap($conf[
'extbase.'][
'controllerName'], $conf[
'extbase.'][
'controllerName.']) : $conf[
'extbase.'][
'controllerName'];
236 if ($requestControllerName) {
237 $this->view->getRequest()->setControllerName($requestControllerName);
239 $requestControllerActionName = isset($conf[
'extbase.'][
'controllerActionName.']) ? $this->cObj->stdWrap($conf[
'extbase.'][
'controllerActionName'], $conf[
'extbase.'][
'controllerActionName.']) : $conf[
'extbase.'][
'controllerActionName'];
240 if ($requestControllerActionName) {
241 $this->view->getRequest()->setControllerActionName($requestControllerActionName);
254 $variables = array();
255 $reservedVariables = array(
'data',
'current');
257 $variablesToProcess = (array)$conf[
'variables.'];
258 foreach ($variablesToProcess as $variableName => $cObjType) {
259 if (is_array($cObjType)) {
262 if (!in_array($variableName, $reservedVariables)) {
263 $variables[$variableName] = $this->cObj->cObjGetSingle($cObjType, $variablesToProcess[$variableName .
'.']);
265 throw new \InvalidArgumentException(
266 'Cannot use reserved name "' . $variableName .
'" as variable name in FLUIDTEMPLATE.',
271 $variables[
'data'] = $this->cObj->data;
272 $variables[
'current'] = $this->cObj->data[$this->cObj->currentValKey];
283 protected function assignSettings(array $conf)
285 if (isset($conf[
'settings.'])) {
288 $settings = $typoScriptService->convertTypoScriptArrayToPlainArray($conf[
'settings.']);
289 $this->view->assign(
'settings', $settings);
300 return $this->view->render();
312 if (isset($conf[
'stdWrap.'])) {
313 $content = $this->cObj->stdWrap($content, $conf[
'stdWrap.']);
328 foreach ($paths as $key => $path) {
330 if (isset($paths[substr($key, 0, -1)])) {
333 $path = $this->cObj->stdWrap(
'', $path);
334 }
elseif (isset($paths[$key .
'.'])) {
335 $path = $this->cObj->stdWrap($path, $paths[$key .
'.']);