ViewHelper Documentation
v:iterator.column
Iterator Column Extraction ViewHelper
Implementation of array_column
for Fluid.
Accepts an input iterator/array and creates a new array using values from one column and optionally keys from another column.
Usage examples
<!-- Given input array of user data arrays with "name" and "uid" column: -->
<f:for each="{users -> v:iterator.column(columnKey: 'name', indexKey: 'uid')}" as="username" key="uid">
User {username} has UID {uid}.
</f:for>
The above demonstrates the logic of the ViewHelper, but the
example itself of course gives the same result as just iterating
the users
variable itself and outputting {user.username}
etc.,
but the real power of the ViewHelper comes when using it to feed
other ViewHelpers with data sets:
<!--
Given same input array as above. Idea being that *any* iterator
can be supported as input for "options".
-->
Select user: <f:form.select options="{users -> v:iterator.column(columnKey: 'name', indexKey: 'uid')}" />
<!-- Given same input array as above. Idea being to output all user UIDs as CSV -->
All UIDs: {users -> v:iterator.column(columnKey: 'uid') -> v:iterator.implode()}
<!-- Given same input array as above. Idea being to output all unique users' countries as a list: -->
Our users live in the following countries:
{users -> v:iterator.column(columnKey: 'countryName')
-> v:iterator.unique()
-> v:iterator.implode(glue: ' - ')}
Note that the ViewHelper also supports the "as" argument which allows you to not return the new array but instead assign it as a new template variable - like any other "as"-capable ViewHelper.
Caveat
This ViewHelper passes the subject directly to array_column
and
as such it does not support dotted paths in either key argument
to extract sub-properties. That means it does not support Extbase
enties as input unless you explicitly implemented ArrayAccess
on
the model of the entity and even then support is limited to first
level properties' values without dots in their names.
Arguments
as string
Template variable name to assign; if not specified the ViewHelper returns the variable instead.
subject anySimpleType
Input to work on - Array/Traversable/...
columnKey string
Name of the column whose values will become the value of the new array
indexKey string
Name of the column whose values will become the index of the new array