*
*
*
* - {propertyPath}
*
*
* - {error.code}: {error}
*
*
*
*
*
*
*
*
*
*
*
* {error.code}: {error}
*
*
*
* ```
*
* @see https://docs.typo3.org/permalink/t3viewhelper:typo3-fluid-form-validationresults
*/
final class ValidationResultsViewHelper extends AbstractViewHelper
{
/**
* As this ViewHelper renders HTML, the output must not be escaped.
*
* @var bool
*/
protected $escapeOutput = false;
public function initializeArguments(): void
{
$this->registerArgument('for', 'string', 'The name of the error name (e.g. argument name or property name). This can also be a property path (like blog.title), and will then only display the validation errors of that property.', false, '');
$this->registerArgument('as', 'string', 'The name of the variable to store the current error', false, 'validationResults');
}
public function render(): string
{
$for = $this->arguments['for'];
$as = $this->arguments['as'];
if (!$this->renderingContext->hasAttribute(ServerRequestInterface::class)
|| !$this->renderingContext->getAttribute(ServerRequestInterface::class) instanceof RequestInterface
) {
throw new \RuntimeException('ValidationResultsViewHelper needs an extbase request to work.', 1724244193);
}
$extbaseRequestParameters = $this->renderingContext->getAttribute(ServerRequestInterface::class)->getAttribute('extbase');
$validationResults = $extbaseRequestParameters->getOriginalRequestMappingResults();
if ($validationResults !== null && $for !== '') {
$validationResults = $validationResults->forProperty($for);
}
$variableProvider = new ScopedVariableProvider($this->renderingContext->getVariableProvider(), new StandardVariableProvider([$as => $validationResults]));
$this->renderingContext->setVariableProvider($variableProvider);
$output = (string)$this->renderChildren();
$this->renderingContext->setVariableProvider($variableProvider->getGlobalVariableProvider());
return $output;
}
}