diff --git a/Classes/ViewHelpers/Iterator/ExtractViewHelper.php b/Classes/ViewHelpers/Iterator/ExtractViewHelper.php index 09420d6da..417eec847 100644 --- a/Classes/ViewHelpers/Iterator/ExtractViewHelper.php +++ b/Classes/ViewHelpers/Iterator/ExtractViewHelper.php @@ -167,7 +167,7 @@ public static function renderStatic( $result = []; } - if ($single && $result instanceof \Traversable) { + if ($single && ($result instanceof \Traversable || is_array($result))) { return reset($result); } diff --git a/Tests/Unit/ViewHelpers/Iterator/ExtractViewHelperTest.php b/Tests/Unit/ViewHelpers/Iterator/ExtractViewHelperTest.php index 13fc5e1ce..0c911db02 100644 --- a/Tests/Unit/ViewHelpers/Iterator/ExtractViewHelperTest.php +++ b/Tests/Unit/ViewHelpers/Iterator/ExtractViewHelperTest.php @@ -173,6 +173,21 @@ public function extractByKeyExtractsKeyByPath($structure, $key, $expected) ); } + /** + * @test + * @dataProvider simpleStructures + */ + public function extractByKeyExtractsKeyByPathWithSingle($structure, $key, $expected) + { + if (is_array($expected)) { + $expected = reset($expected); + } + $this->assertEquals( + $expected, + $this->executeViewHelper(['content' => $structure, 'key' => $key, 'recursive' => false, 'single' => true]) + ); + } + /** * @return array */ @@ -185,6 +200,11 @@ public function simpleStructures() 'myKey', 'myValue' ], + 'flat associative array with array as value' => [ + ['myKey' => ['foo' => 'myValue']], + 'myKey', + ['foo' => 'myValue'], + ], 'deeper associative array' => [ [ 'myFirstKey' => [