From bee5a1d7dcaa10cd14e05eec5ecc78654ab0b4f0 Mon Sep 17 00:00:00 2001 From: Claus Due <claus@namelesscoder.net> Date: Sun, 18 Oct 2015 02:08:23 +0200 Subject: [PATCH] [TASK] Avoid redundant condition blocking arrays as form object Values of arrays (if formObject) can now be accessed with property paths e.g. "key1.vars.special" Change-Id: I578d2ca2d0c5cc5a5ba965e9b7209e88f4af3a88 Resolves: #66533 Releases: master Reviewed-on: https://review.typo3.org/44137 Reviewed-by: Oliver Eglseder <oliver.eglseder@in2code.de> Tested-by: Oliver Eglseder <oliver.eglseder@in2code.de> Reviewed-by: Andreas Fernandez <typo3@scripting-base.de> Tested-by: Andreas Fernandez <typo3@scripting-base.de> --- .../Form/AbstractFormFieldViewHelper.php | 6 +---- .../Form/AbstractFormFieldViewHelperTest.php | 27 +++++++++++++++++++ 2 files changed, 28 insertions(+), 5 deletions(-) diff --git a/typo3/sysext/fluid/Classes/ViewHelpers/Form/AbstractFormFieldViewHelper.php b/typo3/sysext/fluid/Classes/ViewHelpers/Form/AbstractFormFieldViewHelper.php index 8a30786c5880..abfe5bb75b0d 100644 --- a/typo3/sysext/fluid/Classes/ViewHelpers/Form/AbstractFormFieldViewHelper.php +++ b/typo3/sysext/fluid/Classes/ViewHelpers/Form/AbstractFormFieldViewHelper.php @@ -331,11 +331,7 @@ abstract class AbstractFormFieldViewHelper extends AbstractFormViewHelper $formObject = $this->viewHelperVariableContainer->get( \TYPO3\CMS\Fluid\ViewHelpers\FormViewHelper::class, 'formObject' ); - $propertyName = $this->arguments['property']; - if (is_array($formObject)) { - return isset($formObject[$propertyName]) ? $formObject[$propertyName] : null; - } - return ObjectAccess::getPropertyPath($formObject, $propertyName); + return ObjectAccess::getPropertyPath($formObject, $this->arguments['property']); } /** diff --git a/typo3/sysext/fluid/Tests/Unit/ViewHelpers/Form/AbstractFormFieldViewHelperTest.php b/typo3/sysext/fluid/Tests/Unit/ViewHelpers/Form/AbstractFormFieldViewHelperTest.php index a4a26d942ee5..1315f9bca825 100644 --- a/typo3/sysext/fluid/Tests/Unit/ViewHelpers/Form/AbstractFormFieldViewHelperTest.php +++ b/typo3/sysext/fluid/Tests/Unit/ViewHelpers/Form/AbstractFormFieldViewHelperTest.php @@ -565,4 +565,31 @@ class AbstractFormFieldViewHelperTest extends \TYPO3\CMS\Fluid\Tests\Unit\ViewHe $actual = $formViewHelper->_call('renderHiddenFieldForEmptyValue'); $this->assertEquals($expected, $actual); } + + /** + * @test + */ + public function getPropertyValueReturnsArrayValueByPropertyPath() + { + $formFieldViewHelper = $this->getAccessibleMock( + \TYPO3\CMS\Fluid\ViewHelpers\Form\AbstractFormFieldViewHelper::class, + ['renderHiddenIdentityField'], + [], + '', + false + ); + + $this->injectDependenciesIntoViewHelper($formFieldViewHelper); + $formFieldViewHelper->_set('arguments', ['property' => 'key1.key2']); + + $this->viewHelperVariableContainer->expects($this->at(0))->method('exists')->with( + \TYPO3\CMS\Fluid\ViewHelpers\FormViewHelper::class, 'formObject' + )->will($this->returnValue(true)); + $this->viewHelperVariableContainer->expects($this->at(1))->method('get')->with( + \TYPO3\CMS\Fluid\ViewHelpers\FormViewHelper::class, 'formObject' + )->will($this->returnValue(['key1' => ['key2' => 'valueX']])); + + $actual = $formFieldViewHelper->_call('getPropertyValue'); + $this->assertEquals('valueX', $actual); + } } -- GitLab