getFormRuntime(); $prefix = $this->prefixFieldName($this->getFormObjectName()); $markup = $this->createHiddenInputElement( $prefix . '[__state]', $this->hashService->appendHmac( base64_encode(serialize($formRuntime->getFormState())), HashScope::FormState->prefix(), HashAlgo::SHA3_256 ) ); // ONLY assign `__session` if form is performing (uncached) if ($formRuntime->canProcessFormSubmission() && $formRuntime->getFormSession() !== null) { $markup .= $this->createHiddenInputElement( $prefix . '[__session]', $formRuntime->getFormSession()->getAuthenticatedIdentifier() ); } return $markup; } private function createHiddenInputElement(string $name, string $value): string { $tagBuilder = GeneralUtility::makeInstance(TagBuilder::class, 'input'); $tagBuilder->addAttribute('type', 'hidden'); $tagBuilder->addAttribute('name', $name); $tagBuilder->addAttribute('value', $value); return $tagBuilder->render(); } /** * We do NOT return NULL as in this case, the Form ViewHelpers do not enter $objectAccessorMode. * However, we return the form identifier. */ protected function getFormObjectName(): string { return $this->getFormRuntime()->getFormDefinition()->getIdentifier(); } private function getFormRuntime(): FormRuntime { return $this->arguments['object']; } }