‪TYPO3CMS  11.5
FluidFormRenderer.php
Go to the documentation of this file.
1 <?php
2 
3 declare(strict_types=1);
4 
5 /*
6  * This file is part of the TYPO3 CMS project.
7  *
8  * It is free software; you can redistribute it and/or modify it under
9  * the terms of the GNU General Public License, either version 2
10  * of the License, or any later version.
11  *
12  * For the full copyright and license information, please read the
13  * LICENSE.txt file that was distributed with this source code.
14  *
15  * The TYPO3 project - inspiring people to share!
16  */
17 
18 /*
19  * Inspired by and partially taken from the Neos.Form package (www.neos.io)
20  */
21 
23 
28 
127 {
141  public function ‪render(): string
142  {
143  $formElementType = $this->formRuntime->getType();
144  $renderingOptions = $this->formRuntime->getRenderingOptions();
145 
146  $view = GeneralUtility::makeInstance(TemplateView::class);
147  // @deprecated since v11, will be removed with v12.
148  $view->setControllerContext($this->controllerContext);
149 
150  if (!isset($renderingOptions['templateRootPaths'])) {
151  throw new ‪RenderingException(
152  sprintf('The option templateRootPaths must be set for renderable "%s"', $formElementType),
153  1480293084
154  );
155  }
156  if (!isset($renderingOptions['layoutRootPaths'])) {
157  throw new ‪RenderingException(
158  sprintf('The option layoutRootPaths must be set for renderable "%s"', $formElementType),
159  1480293085
160  );
161  }
162  if (!isset($renderingOptions['partialRootPaths'])) {
163  throw new ‪RenderingException(
164  sprintf('The option partialRootPaths must be set for renderable "%s"', $formElementType),
165  1480293086
166  );
167  }
168 
169  $view->assign('form', $this->formRuntime);
170 
171  $view->getRenderingContext()
172  ->getViewHelperVariableContainer()
173  ->addOrUpdate(RenderRenderableViewHelper::class, 'formRuntime', $this->formRuntime);
174 
175  // Configure the fluid TemplatePaths with the rendering options
176  // from the renderable
177  $view->getTemplatePaths()->fillFromConfigurationArray($renderingOptions);
178 
179  foreach (‪$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['ext/form']['beforeRendering'] ?? [] as $className) {
180  $hookObj = GeneralUtility::makeInstance($className);
181  if (method_exists($hookObj, 'beforeRendering')) {
182  $hookObj->beforeRendering(
183  $this->formRuntime,
184  $this->formRuntime->getFormDefinition()
185  );
186  }
187  }
188 
189  return $view->render($this->formRuntime->getTemplateName());
190  }
191 }
‪TYPO3\CMS\Form\Domain\Renderer
Definition: AbstractElementRenderer.php:22
‪TYPO3\CMS\Fluid\View\TemplateView
Definition: TemplateView.php:22
‪TYPO3\CMS\Form\Domain\Renderer\FluidFormRenderer
Definition: FluidFormRenderer.php:127
‪TYPO3\CMS\Form\Domain\Renderer\AbstractElementRenderer
Definition: AbstractElementRenderer.php:34
‪TYPO3\CMS\Form\ViewHelpers\RenderRenderableViewHelper
Definition: RenderRenderableViewHelper.php:41
‪$GLOBALS
‪$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['adminpanel']['modules']
Definition: ext_localconf.php:25
‪TYPO3\CMS\Form\Domain\Exception\RenderingException
Definition: RenderingException.php:29
‪TYPO3\CMS\Form\Domain\Renderer\FluidFormRenderer\render
‪string render()
Definition: FluidFormRenderer.php:141
‪TYPO3\CMS\Core\Utility\GeneralUtility
Definition: GeneralUtility.php:50