public function EntityReferenceMiconFormatter::viewElements in Micon 8
Same name and namespace in other branches
- 2.x src/Plugin/Field/FieldFormatter/EntityReferenceMiconFormatter.php \Drupal\micon\Plugin\Field\FieldFormatter\EntityReferenceMiconFormatter::viewElements()
Builds a renderable array for a field value.
Parameters
\Drupal\Core\Field\FieldItemListInterface $items: The field values to be rendered.
string $langcode: The language that should be used to render the field.
Return value
array A renderable array for $items, as an array of child elements keyed by consecutive numeric indexes starting from 0.
Overrides EntityReferenceLabelFormatter::viewElements
File
- src/
Plugin/ Field/ FieldFormatter/ EntityReferenceMiconFormatter.php, line 26
Class
- EntityReferenceMiconFormatter
- Plugin implementation of the 'entity reference label' formatter.
Namespace
Drupal\micon\Plugin\Field\FieldFormatterCode
public function viewElements(FieldItemListInterface $items, $langcode) {
$elements = [];
$output_as_link = $this
->getSetting('link');
foreach ($this
->getEntitiesToView($items, $langcode) as $delta => $entity) {
$icon = new MiconIconize($entity
->label());
if ($icon) {
$bundle = $entity
->bundle() == 'node_type' ? 'content_type' : $entity
->bundle();
$icon
->addMatchPrefix($bundle)
->setIconOnly();
// If the link is to be displayed and the entity has a uri, display a
// link.
if ($output_as_link && !$entity
->isNew()) {
try {
$uri = $entity
->urlInfo();
} catch (UndefinedLinkTemplateException $e) {
$output_as_link = FALSE;
}
}
if ($output_as_link && isset($uri) && !$entity
->isNew()) {
$elements[$delta] = [
'#type' => 'link',
'#title' => $icon,
'#url' => $uri,
'#options' => $uri
->getOptions(),
];
if (!empty($items[$delta]->_attributes)) {
$elements[$delta]['#options'] += [
'attributes' => [],
];
$elements[$delta]['#options']['attributes'] += $items[$delta]->_attributes;
// Unset field item attributes since they have been included in the
// formatter output and shouldn't be rendered in the field template.
unset($items[$delta]->_attributes);
}
}
else {
$elements[$delta]['#markup'] = $icon
->render();
}
}
$elements[$delta]['#cache']['tags'] = $entity
->getCacheTags();
}
return $elements;
}