Feature: #84713 - Access single values in form templates

See forge#84713

Description

It is now possible to access single form values in templates of the "form" extension. For this a new RenderFormValueViewHelper has been added which complements the existing RenderAllFormValuesViewHelper.

The RenderFormValueViewHelper accepts a single form element and renders it exactly like the RenderAllFormValuesViewHelper used to do within its internal traversal of renderable elements:

To make it possible to access single form elements, a new method FormDefinition::getElements() has been added. This method returns an array containing all elements in the form with their identifiers as keys.

Viewhelper usage in mail templates:

<p>The following message was just sent by <b><formvh:renderFormValue renderable="{form.formDefinition.elements.name}" as="formValue">{formValue.processedValue}</formvh:renderFormValue><b>:</p>

<blockquote>
   <formvh:renderFormValue renderable="{form.formDefinition.elements.message}" as="formValue">
      {formValue.processedValue}
   </formvh:renderFormValue>
</blockquote>
Copied!

See which elements are accessible in mail templates:

<f:debug>{form.formDefinition.elements}</f:debug>
Copied!

Viewhelper usage in the SummaryPage partial:

<p>The following message was just sent by <b><formvh:renderFormValue renderable="{page.rootForm.elements.name}" as="formValue">{formValue.processedValue}</formvh:renderFormValue><b>:</p>

<blockquote>
   <formvh:renderFormValue renderable="{page.rootForm.elements.message}" as="formValue">
      {formValue.processedValue}
   </formvh:renderFormValue>
</blockquote>
Copied!

See which elements are accessible in the SummaryPage partial:

<f:debug>{page.rootForm.elements}</f:debug>
Copied!

Impact

Form values can now be placed freely in Fluid templates of the "form" extension instead of being bound to traverse all form values and skip rendering.