2 declare(strict_types = 1);
26 use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;
27 use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;
28 use TYPO3Fluid\Fluid\Core\ViewHelper\Traits\CompileWithRenderStatic;
37 use CompileWithRenderStatic;
51 $this->registerArgument(
'renderable', RootRenderableInterface::class,
'A RootRenderableInterface instance',
true);
52 $this->registerArgument(
'as',
'string',
'The name within the template',
false,
'formValue');
63 public static function renderStatic(array $arguments, \Closure $renderChildrenClosure, RenderingContextInterface $renderingContext)
65 $renderable = $arguments[
'renderable'];
66 $as = $arguments[
'as'];
68 if (!$renderable->isEnabled()) {
73 $elements = $renderable->getRenderablesRecursively();
75 $elements = [$renderable];
78 $formRuntime = $renderingContext
79 ->getViewHelperVariableContainer()
80 ->get(RenderRenderableViewHelper::class,
'formRuntime');
83 foreach ($elements as $element) {
84 $renderingOptions = $element->getRenderingOptions();
88 || (isset($renderingOptions[
'_isCompositeFormElement']) && (
bool)$renderingOptions[
'_isCompositeFormElement'] ===
true)
90 || self::hasDisabledParent($element)
96 (isset($renderingOptions[
'_isHiddenFormElement']) && (
bool)$renderingOptions[
'_isHiddenFormElement'] ===
true)
97 || (isset($renderingOptions[
'_isReadOnlyFormElement']) && (
bool)$renderingOptions[
'_isReadOnlyFormElement'] ===
true)
100 'Using the properties "renderingOptions._isHiddenFormElement" and "renderingOptions._isReadOnlyFormElement" will be removed in TYPO3 v10.0. Use variants instead.',
106 $value = $formRuntime[$element->getIdentifier()];
109 'element' => $element,
112 'isMultiValue' => is_array($value) || $value instanceof \Iterator
114 $renderingContext->getVariableProvider()->add($as, $formValue);
115 $output .= $renderChildrenClosure();
116 $renderingContext->getVariableProvider()->remove($as);
134 \Closure $renderChildrenClosure,
135 RenderingContextInterface $renderingContext
138 if (isset($properties[
'options']) && is_array($properties[
'options'])) {
140 [
'element' => $element,
'property' =>
'options'],
141 $renderChildrenClosure,
144 if (is_array($value)) {
149 if (is_object($value)) {
167 foreach ($value as $key) {
184 return $options[$value] ?? $value;
198 if ($object instanceof \DateTime) {
200 $element->
getType() ===
'DatePicker'
201 && isset($properties[
'dateFormat'])
203 $dateFormat = $properties[
'dateFormat'];
204 if (isset($properties[
'displayTimeSelector']) && $properties[
'displayTimeSelector'] ===
true) {
205 $dateFormat .=
' H:i';
207 } elseif ($element->
getType() ===
'Date') {
208 if (isset($properties[
'displayFormat'])) {
209 $dateFormat = $properties[
'displayFormat'];
211 $dateFormat =
'Y-m-d';
214 $dateFormat = \DateTime::W3C;
217 return $object->format($dateFormat);
222 $object = $object->getOriginalResource();
224 return $object->getName();
227 if (method_exists($object,
'__toString')) {
228 return (
string)$object;
230 return 'Object [' . get_class($object) .
']';