17 use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;
18 use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;
19 use TYPO3Fluid\Fluid\Core\ViewHelper\Traits\CompileWithRenderStatic;
30 use CompileWithRenderStatic;
44 $this->registerArgument(
'arguments',
'array',
'Arguments to assign as template variables',
false, []);
53 public static function renderStatic(array $arguments, \Closure $renderChildrenClosure, RenderingContextInterface $renderingContext)
55 $subRenderingContext = static::getWidgetRenderingContext($renderingContext);
56 $widgetChildNodes = static::getWidgetChildNodes($renderingContext);
57 static::addArgumentsToTemplateVariableContainer($subRenderingContext, $arguments[
'arguments']);
58 $output = $widgetChildNodes->evaluate($subRenderingContext);
59 static::removeArgumentsFromTemplateVariableContainer($subRenderingContext, $arguments[
'arguments']);
72 $subRenderingContext = static::getWidgetContext($renderingContext)->getViewHelperChildNodeRenderingContext();
73 if (!$subRenderingContext instanceof \
TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface) {
74 throw new \TYPO3\CMS\Fluid\Core\Widget\Exception\RenderingContextNotFoundException(
'Rendering Context not found inside Widget. <f:renderChildren> has been used in an AJAX Request, but is only usable in non-ajax mode.', 1284986604);
76 return $subRenderingContext;
85 return static::getWidgetContext($renderingContext)->getViewHelperChildNodes();
93 protected static function getWidgetContext(RenderingContextInterface $renderingContext)
95 $request = $renderingContext->getControllerContext()->getRequest();
96 if (!$request instanceof \
TYPO3\CMS\Fluid\Core\Widget\WidgetRequest) {
97 throw new \TYPO3\CMS\Fluid\Core\Widget\Exception\WidgetRequestNotFoundException(
'The Request is not a WidgetRequest! <f:renderChildren> must be called inside a Widget Template.', 1284986120);
99 return $request->getWidgetContext();
110 $templateVariableContainer = $renderingContext->getVariableProvider();
111 foreach ($arguments as $identifier => $value) {
112 $templateVariableContainer->add($identifier, $value);
124 $templateVariableContainer = $renderingContext->getVariableProvider();
125 foreach ($arguments as $identifier => $value) {
126 $templateVariableContainer->remove($identifier);