CommaSeparatedValueProcessor¶
The CommaSeparatedValueProcessor
allows to split values into a two-
dimensional array used for CSV files or tt_content records of CType
“table”.
The table data is transformed to a multi dimensional array, taking the delimiter and enclosure into account, before it is passed to the view.
Options:¶
-
if
¶ Required: false Type: if condition Default: ”” If the condition is not met the data is not processed
-
fieldName
¶ Required: true Type: string, stdWrap Default: ’’ Name of the field in the processed ContentObjectRenderer
-
as
¶ Required: false Type: string Default: defaults to the fieldName The variable’s name to be used in the Fluid template
-
maximumColumns
¶ Required: false Type: int, stdWrap Default: 0 Maximal number of columns to be transformed. Excess columns will be silently dropped. When set to 0 (default) all columns will be transformed.
-
fieldDelimiter
¶ Required: false Type: string(1), stdWrap Default: ‘,’ The field delimiter, a character separating the values.
-
fieldEnclosure
¶ Required: false Type: string(1), stdWrap Default: ‘”’ The field enclosure, a character surrounding the values.
Note
It is currently not possible to unset the fieldEnclosure. See: Issue 93190
Example: Transforming comma separated content into a html table¶
Please see also About the examples.
In this example the field bodytext
contains comma separated
values (CSV) data. To support different formats the separator between
the values can be chosen.
This example is also described in-depth in TYPO3 Explained: Extended content element example.
Example data in the field bodytext
¶
Field bodytext
in table tt_content
:
This is row 1 column 1,This is row 1 column 2,This is row 1 column 3
This is row 2 column 1,This is row 2 column 2,This is row 2 column 3
This is row 3 column 1,This is row 3 column 2,This is row 3 column 3
TypoScript¶
We define the dataProcessing property to use the CommaSeparatedValueProcessor:
tt_content {
# lib.contentElement = FLUIDTEMPLATE
examples_newcontentcsv =< lib.contentElement
examples_newcontentcsv {
templateName = DataProcCsv
dataProcessing.10 = TYPO3\CMS\Frontend\DataProcessing\CommaSeparatedValueProcessor
dataProcessing.10 {
if.isTrue.field = bodytext
fieldName = bodytext
fieldDelimiter.field = tx_examples_separator
fieldEnclosure = "
maximumColumns.field = imagecols
as = myTable
}
}
}
The Fluid template¶
In the Fluid template you can iterate over the processed data. “myContentTable” can
be used as a variable {myContentTable}
inside Fluid for iteration.
<html data-namespace-typo3-fluid="true"
xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers">
<h2>Data in variable "myTable"</h2>
<f:debug inline="true">{myTable}</f:debug>
<h2>Output, {data.imagecols} columns separated by char {data.tx_examples_separator}</h2>
<table class="table table-hover">
<f:for each="{myTable}" as="columns" iteration="i">
<tr>
<th scope="row">{i.cycle}</th>
<f:for as="column" each="{columns}">
<td>{column}</td>
</f:for>
<tr>
</f:for>
</table>
</html>
Output¶
Using maximumColumns
limits the amount of columns in the multi dimensional array.
In this example, the field data of the last column will be stripped off. Therefore the output would be:
