public function FieldTypeExportBase::export in Entity Export CSV 8
Export the value of a field.
Parameters
\Drupal\Core\Entity\ContentEntityInterface $entity: The entity to export.
\Drupal\Core\Field\FieldDefinitionInterface $field_definition: The field definition.
array $options: An array of additionnal options.
Return value
string The string value to be export in the CSV file.
Overrides FieldTypeExportInterface::export
File
- src/
Plugin/ FieldTypeExportBase.php, line 309
Class
- FieldTypeExportBase
- Base class for Field type export plugins.
Namespace
Drupal\entity_export_csv\PluginCode
public function export(ContentEntityInterface $entity, FieldDefinitionInterface $field_definition, array $options = []) {
$configuration = $this
->getConfiguration();
$row = [];
$values = [];
$field_name = $field_definition
->getName();
$property_names = $this
->getPropertiesSelected($field_definition);
if ($entity
->hasField($field_name)) {
/** @var \Drupal\Core\Field\FieldItemListInterface $field_items */
$field_items = $entity
->get($field_name);
/** @var \Drupal\Core\Field\FieldItemInterface $field_item */
foreach ($field_items as $index => $field_item) {
foreach ($property_names as $property_name) {
$values[$index][$property_name] = $this
->massageExportPropertyValue($field_item, $property_name, $field_definition, $options);
}
}
}
$values_per_property = [];
foreach ($values as $index => $properties) {
foreach ($properties as $property_name => $property_value) {
$values_per_property[$property_name][$index] = $property_value;
}
}
$columns = $this
->getColumns($field_definition);
if ($columns === 1) {
if ($this
->propertiesInSeparateColumns()) {
foreach ($property_names as $property_name) {
$row[] = implode($configuration['separator'], $values_per_property[$property_name]);
}
}
else {
foreach ($values as $index => $properties) {
$properties = array_filter($properties);
$values[$index] = implode($this
->getPropertyColumnSeparator(), $properties);
}
$row[] = implode($configuration['separator'], $values);
}
}
else {
for ($i = 0; $i < $columns; $i++) {
if ($this
->propertiesInSeparateColumns()) {
foreach ($property_names as $property_name) {
$row[] = isset($values[$i][$property_name]) ? $values[$i][$property_name] : NULL;
}
}
else {
$properties = isset($values[$i]) ? $values[$i] : [];
$properties = array_filter($properties);
$row[] = implode($this
->getPropertyColumnSeparator(), $properties);
}
}
}
return $row;
}