50 parent::initializeArguments();
51 $this->registerArgument(
'name',
'string',
'Name of input tag');
52 $this->registerArgument(
'value',
'mixed',
'Value of input tag');
53 $this->registerArgument(
56 'Name of Object Property. If used in conjunction with <f:form object="...">, "name" and "value" properties will be ignored.'
101 return $this->renderingContext->getControllerContext()->getRequest();
112 $formObjectName = $this->renderingContext->getViewHelperVariableContainer()->get(
113 \
TYPO3\CMS\Fluid\ViewHelpers\FormViewHelper::class,
116 if (!empty($formObjectName)) {
117 $propertySegments = explode(
'.', $this->arguments[
'property'] ??
'');
119 foreach ($propertySegments as $segment) {
120 $propertyPath .=
'[' . $segment .
']';
122 $name = $formObjectName . $propertyPath;
124 $name = $this->arguments[
'property'] ??
'';
127 $name = $this->arguments[
'name'] ??
'';
129 if ($this->hasArgument(
'value') && is_object($this->arguments[
'value'])) {
131 if (
null !== $this->persistenceManager->getIdentifierByObject($this->arguments[
'value'])) {
132 $name .=
'[__identity]';
153 if ($this->respectSubmittedDataValue) {
155 } elseif ($this->hasArgument(
'value')) {
156 $value = $this->arguments[
'value'];
179 $submittedFormData =
null;
183 if ($submittedFormData !==
null) {
184 $value = $submittedFormData;
185 } elseif ($this->hasArgument(
'value')) {
186 $value = $this->arguments[
'value'];
202 if (is_object($value)) {
203 $identifier = $this->persistenceManager->getIdentifierByObject($value);
204 if ($identifier !==
null) {
205 $value = $identifier;
218 return $this->renderingContext->getControllerContext()->getRequest()->getOriginalRequest() !==
null;
231 $this->renderingContext->getControllerContext()->getRequest()->getOriginalRequest()->getArguments(),
247 $viewHelperVariableContainer = $this->renderingContext->getViewHelperVariableContainer();
248 if (!$viewHelperVariableContainer->exists(
249 \
TYPO3\CMS\Fluid\ViewHelpers\FormViewHelper::class,
255 $propertySegments = explode(
'.', $this->arguments[
'property']);
257 if (count($propertySegments) < 2) {
260 $formObject = $viewHelperVariableContainer->get(
261 \
TYPO3\CMS\Fluid\ViewHelpers\FormViewHelper::class,
264 $objectName = $viewHelperVariableContainer->get(
265 \
TYPO3\CMS\Fluid\ViewHelpers\FormViewHelper::class,
269 $propertySegmentsCount = count($propertySegments);
270 for ($i = 1; $i < $propertySegmentsCount; $i++) {
272 $objectName .=
'[' . $propertySegments[$i - 1] .
']';
275 $additionalIdentityProperties = $viewHelperVariableContainer->get(
276 \
TYPO3\CMS\Fluid\ViewHelpers\FormViewHelper::class,
277 'additionalIdentityProperties'
279 $additionalIdentityProperties[$objectName] = $hiddenIdentityField;
280 $viewHelperVariableContainer->addOrUpdate(
281 \
TYPO3\CMS\Fluid\ViewHelpers\FormViewHelper::class,
282 'additionalIdentityProperties',
283 $additionalIdentityProperties
295 $viewHelperVariableContainer = $this->renderingContext->getViewHelperVariableContainer();
296 if (!$viewHelperVariableContainer->exists(
297 \
TYPO3\CMS\Fluid\ViewHelpers\FormViewHelper::class,
303 $formObject = $viewHelperVariableContainer->get(
304 \
TYPO3\CMS\Fluid\ViewHelpers\FormViewHelper::class,
317 return $this->hasArgument(
'property') && $this->renderingContext->getViewHelperVariableContainer()->exists(
318 \
TYPO3\CMS\Fluid\ViewHelpers\FormViewHelper::class,
328 if ($this->hasArgument(
'class')) {
329 $cssClass = $this->arguments[
'class'] .
' ';
335 if ($mappingResultsForProperty->hasErrors()) {
336 if ($this->hasArgument(
'errorClass')) {
337 $cssClass .= $this->arguments[
'errorClass'];
339 $cssClass .=
'error';
341 $this->tag->addAttribute(
'class', $cssClass);
353 return new \TYPO3\CMS\Extbase\Error\Result();
355 $originalRequestMappingResults = $this->
getRequest()->getOriginalRequestMappingResults();
356 $formObjectName = $this->renderingContext->getViewHelperVariableContainer()->get(
357 \
TYPO3\CMS\Fluid\ViewHelpers\FormViewHelper::class,
360 return $originalRequestMappingResults->forProperty($formObjectName)->forProperty($this->arguments[
'property']);
371 $hiddenFieldNames = [];
372 $viewHelperVariableContainer = $this->renderingContext->getViewHelperVariableContainer();
373 if ($viewHelperVariableContainer->exists(
374 \
TYPO3\CMS\Fluid\ViewHelpers\FormViewHelper::class,
375 'renderedHiddenFields'
378 $hiddenFieldNames = $viewHelperVariableContainer->get(
379 \
TYPO3\CMS\Fluid\ViewHelpers\FormViewHelper::class,
380 'renderedHiddenFields'
384 if (substr($fieldName, -2) ===
'[]') {
385 $fieldName = substr($fieldName, 0, -2);
387 if (!in_array($fieldName, $hiddenFieldNames,
true)) {
388 $hiddenFieldNames[] = $fieldName;
389 $viewHelperVariableContainer->addOrUpdate(
390 \
TYPO3\CMS\Fluid\ViewHelpers\FormViewHelper::class,
391 'renderedHiddenFields',
394 return '<input type="hidden" name="' . htmlspecialchars($fieldName) .
'" value="" />';