iterable-to-array
Class:
\CPSIT\
Converts an iterable value — an Extbase
Query as
returned by a repository, an
Object, a plain
Iterator
,
or a
Generator
— into a plain array. Templates and other data
processors generally expect array data, so this processor is the usual
bridge between a repository result and the rest of the
data chain.
Data sources
iterable
references the value to convert, e.g. the output of a
preceding processor or a variable assigned by an Extbase controller
(
processed). See Referencing data
for the syntax.
Usage
final class NewsController extends HandlebarsController
{
public function listAction(): ResponseInterface
{
$this->view->assign('news', $this->newsRepository->findAll());
return $this->htmlResponse($this->renderView());
}
}
plugin.tx_myextension_news.handlebars {
News::list {
dataProcessing {
10 = iterable-to-array
10 {
iterable = processedData:news
as = newsItems
}
}
}
}
Processing individual items
Each converted item is set as the content object's current value while a
nested
data chain runs, so nested processors can
reference it with
current = 1
(see
Using the current value). This only happens when a nested chain is
actually configured, so plain conversions are left untouched:
dataProcessing {
10 = iterable-to-array
10 {
iterable = processedData:news
as = newsItems
dataProcessing {
10 = object-access
10 {
object.current = 1
path = title
as = title
}
}
}
}
Properties
iterable- Data source reference(s) the value to convert is read from (see Data sources). Required.
as- Target key in the processed data array the resulting array is stored
under. Default:
result. preserveKeys - Boolean. When
1, the original keys of the iterable (e.g. array keys orGeneratorkeys) are preserved. When0, the result is reindexed as a plain list. Default:0. dataProcessing - Nested data processors, run for each item of the converted array (see Processing individual items).
If
iterable
is not configured, or the resolved value is not
iterable, a warning is logged and the processed data is returned unchanged.