iterator.extract

Iterator / Extract VieWHelper

Loop through the iterator and extract a key, optionally join the results if more than one value is found.

Extract values from an array by key

The extbase version of indexed_search returns an array of the previous search, which cannot easily be shown in the input field of the result page. This can be solved.

Example

<f:form.textfield name="search[sword]"
    value="{v:iterator.extract(key:'sword', content: searchWords) -> v:iterator.implode(glue: ' ')}"
    class="tx-indexedsearch-searchbox-sword" />

Get the names of several users

Provided we have a bunch of FrontendUsers and we need to show their firstname combined into a string:

<h2>Welcome
<v:iterator.implode glue=", "><v:iterator.extract key="firstname" content="frontendUsers" /></v:iterator.implode>
<!-- alternative: -->
{frontendUsers -> v:iterator.extract(key: 'firstname') -> v:iterator.implode(glue: ', ')}
</h2>

Output

<h2>Welcome Peter, Paul, Marry</h2>

Complex example

{anArray->v:iterator.extract(path: 'childProperty.secondNestedChildObject')
    -> v:iterator.sort(direction: 'DESC', sortBy: 'propertyOnSecondChild')
    -> v:iterator.slice(length: 10)->v:iterator.extract(key: 'uid')}

Single return value

Outputs the “uid” value of the first record in variable $someRecords without caring if there are more than one records. Always extracts the first value and then stops. Equivalent of changing -> v:iterator.first().

{someRecords -> v:iterator.extract(key: 'uid', single: TRUE)}

Arguments

content

DataType
mixed
Required
false
Description
The array or Iterator that contains either the value or arrays of values

key

DataType
string
Required
false
Description
The name of the key from which you wish to extract the value

recursive

DataType
boolean
Default
true
Required
false
Description
If TRUE, attempts to extract the key from deep nested arrays

single

DataType
boolean
Required
false
Description
If TRUE, returns only one value - always the first one - instead of an array of values