3 namespace TYPO3\CMS\Fluid\ViewHelpers\Form;
57 parent::initializeArguments();
62 'Name of Object Property. If used in conjunction with <f:form object="...">, "name" and "value" properties will be ignored.'
108 return $this->controllerContext->getRequest();
119 $formObjectName = $this->viewHelperVariableContainer->get(
120 \TYPO3\CMS\
Fluid\ViewHelpers\FormViewHelper::class,
'formObjectName'
122 if (!empty($formObjectName)) {
123 $propertySegments = explode(
'.', $this->arguments[
'property']);
125 foreach ($propertySegments as $segment) {
126 $propertyPath .=
'[' . $segment .
']';
128 $name = $formObjectName . $propertyPath;
130 $name = $this->arguments[
'property'];
133 $name = $this->arguments[
'name'];
135 if ($this->
hasArgument(
'value') && is_object($this->arguments[
'value'])) {
137 if (null !== $this->persistenceManager->getIdentifierByObject($this->arguments[
'value'])) {
138 $name .=
'[__identity]';
152 protected function getValue($convertObjects =
true)
158 $value = $this->arguments[
'value'];
168 if ($convertObjects) {
189 if ($this->respectSubmittedDataValue) {
192 $value = $this->arguments[
'value'];
215 $submittedFormData = null;
219 if ($submittedFormData !== null) {
220 $value = $submittedFormData;
222 $value = $this->arguments[
'value'];
238 if (is_object($value)) {
239 $identifier = $this->persistenceManager->getIdentifierByObject($value);
240 if ($identifier !== null) {
241 $value = $identifier;
254 return $this->
getRequest()->getOriginalRequest() !== null;
265 $propertyPath = rtrim(preg_replace(
'/(\\]\\[|\\[|\\])/',
'.', $this->
getNameWithoutPrefix()),
'.');
267 $this->controllerContext->getRequest()->getOriginalRequest()->getArguments(), $propertyPath
284 if (!$this->viewHelperVariableContainer->exists(
285 \TYPO3\CMS\
Fluid\ViewHelpers\FormViewHelper::class,
'formObject'
290 $propertySegments = explode(
'.', $this->arguments[
'property']);
292 if (count($propertySegments) < 2) {
295 $formObject = $this->viewHelperVariableContainer->get(
296 \TYPO3\CMS\
Fluid\ViewHelpers\FormViewHelper::class,
'formObject'
298 $objectName = $this->viewHelperVariableContainer->get(
299 \TYPO3\CMS\
Fluid\ViewHelpers\FormViewHelper::class,
'formObjectName'
302 for ($i = 1; $i < count($propertySegments); $i++) {
304 $objectName .=
'[' . $propertySegments[($i - 1)] .
']';
307 $additionalIdentityProperties = $this->viewHelperVariableContainer->get(
308 \TYPO3\CMS\
Fluid\ViewHelpers\FormViewHelper::class,
'additionalIdentityProperties'
310 $additionalIdentityProperties[$objectName] = $hiddenIdentityField;
311 $this->viewHelperVariableContainer->addOrUpdate(
312 \TYPO3\CMS\
Fluid\ViewHelpers\FormViewHelper::class,
'additionalIdentityProperties',
313 $additionalIdentityProperties
325 if (!$this->viewHelperVariableContainer->exists(
326 \TYPO3\CMS\
Fluid\ViewHelpers\FormViewHelper::class,
'formObject'
331 $formObject = $this->viewHelperVariableContainer->get(
332 \TYPO3\CMS\
Fluid\ViewHelpers\FormViewHelper::class,
'formObject'
334 $propertyName = $this->arguments[
'property'];
335 if (is_array($formObject)) {
336 return isset($formObject[$propertyName]) ? $formObject[$propertyName] : null;
348 return $this->
hasArgument(
'property') && $this->viewHelperVariableContainer->exists(
349 \TYPO3\CMS\
Fluid\ViewHelpers\FormViewHelper::class,
'formObjectName'
361 $cssClass = $this->arguments[
'class'] .
' ';
367 if ($mappingResultsForProperty->hasErrors()) {
369 $cssClass .= $this->arguments[
'errorClass'];
371 $cssClass .=
'error';
373 $this->tag->addAttribute(
'class', $cssClass);
385 return new \TYPO3\CMS\Extbase\Error\Result();
387 $originalRequestMappingResults = $this->
getRequest()->getOriginalRequestMappingResults();
388 $formObjectName = $this->viewHelperVariableContainer->get(
389 \TYPO3\CMS\
Fluid\ViewHelpers\FormViewHelper::class,
'formObjectName'
391 return $originalRequestMappingResults->forProperty($formObjectName)->forProperty($this->arguments[
'property']);
402 $hiddenFieldNames = [];
403 if ($this->viewHelperVariableContainer->exists(
404 \TYPO3\CMS\
Fluid\ViewHelpers\FormViewHelper::class,
'renderedHiddenFields'
407 $hiddenFieldNames = $this->viewHelperVariableContainer->get(
408 \TYPO3\CMS\
Fluid\ViewHelpers\FormViewHelper::class,
'renderedHiddenFields'
412 if (substr($fieldName, -2) ===
'[]') {
413 $fieldName = substr($fieldName, 0, -2);
415 if (!in_array($fieldName, $hiddenFieldNames)) {
416 $hiddenFieldNames[] = $fieldName;
417 $this->viewHelperVariableContainer->addOrUpdate(
418 \TYPO3\CMS\
Fluid\ViewHelpers\FormViewHelper::class,
'renderedHiddenFields', $hiddenFieldNames
420 return '<input type="hidden" name="' . htmlspecialchars($fieldName) .
'" value="" />';