Skip to content

Commit

Permalink
Merge pull request #56 from bwaidelich/55-reusable-rendervalues-viewh…
Browse files Browse the repository at this point in the history
…elper

FEATURE: Make RenderValuesViewHelper usable in Finishers
  • Loading branch information
Bastian Waidelich committed Aug 14, 2017
2 parents 55cb4be + 0f50f13 commit 2ebd7ae
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 8 deletions.
21 changes: 14 additions & 7 deletions Classes/ViewHelpers/RenderValuesViewHelper.php
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
use Neos\Form\Core\Model\Renderable\CompositeRenderableInterface;
use Neos\Form\Core\Model\Renderable\RootRenderableInterface;
use Neos\Form\Core\Renderer\RendererInterface;
use Neos\Form\Core\Runtime\FormRuntime;
use Neos\Media\Domain\Model\Image;

/**
Expand All @@ -30,21 +31,27 @@ class RenderValuesViewHelper extends AbstractViewHelper
protected $escapeOutput = false;

/**
* @param RootRenderableInterface $renderable
* @param RootRenderableInterface $renderable If specified, only the values of the given renderable are rendered, otherwise all form elements are rendered
* @param FormRuntime $formRuntime If not set, the Form Runtime will be fetched from the View, which only works within the FluidFormRenderer
* @param string $as
* @return string the rendered form values
*/
public function render(RootRenderableInterface $renderable, $as = 'formValue')
public function render(RootRenderableInterface $renderable = null, FormRuntime $formRuntime = null, $as = 'formValue')
{
if ($formRuntime === null) {
/** @var RendererInterface $fluidFormRenderer */
$fluidFormRenderer = $this->viewHelperVariableContainer->getView();
$formRuntime = $fluidFormRenderer->getFormRuntime();
}
if ($renderable === null) {
$renderable = $formRuntime->getFormDefinition();
}
if ($renderable instanceof CompositeRenderableInterface) {
$elements = $renderable->getRenderablesRecursively();
} else {
$elements = [$renderable];
}

/** @var RendererInterface $fluidFormRenderer */
$fluidFormRenderer = $this->viewHelperVariableContainer->getView();
$formRuntime = $fluidFormRenderer->getFormRuntime();
$formState = $formRuntime->getFormState();
$output = '';
foreach ($elements as $element) {
Expand All @@ -71,7 +78,7 @@ public function render(RootRenderableInterface $renderable, $as = 'formValue')
*
* @param FormElementInterface $element
* @param mixed $value
* @return string
* @return string|array
*/
protected function processElementValue(FormElementInterface $element, $value)
{
Expand All @@ -96,7 +103,7 @@ protected function processElementValue(FormElementInterface $element, $value)
*
* @param array $value
* @param array $options
* @return string
* @return array
*/
protected function mapValuesToOptions(array $value, array $options)
{
Expand Down
2 changes: 1 addition & 1 deletion Resources/Private/Form/PreviewPage.html
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
<th style="width: 170px">{f:translate(id: 'forms.pages.labelTitle', package: '{page.renderingOptions.translationPackage}', value: 'Label')}</th>
<th>{f:translate(id: 'forms.pages.valueTitle', package: '{page.renderingOptions.translationPackage}', value: 'Value')}</th>
</tr>
<form:renderValues renderable="{page.rootForm}">
<form:renderValues formRuntime="{form}">
<tr>
<th>{formValue.element.label}</th>
<td>
Expand Down

0 comments on commit 2ebd7ae

Please sign in to comment.