This repository has been archived on 2022-07-12. You can view files and clone it, but cannot push or open issues or pull requests.
opencase/src/Plugin/Field/FieldFormatter/EntityReferenceCurrentTarge...

36 lines
1.2 KiB
PHP

<?php
namespace Drupal\opencase\Plugin\Field\FieldFormatter;
use Drupal\Core\Field\Plugin\Field\FieldFormatter\EntityReferenceLabelFormatter;
/**
* Plugin implementation of the 'entity reference label delta' formatter.
*
* @FieldFormatter(
* id = "entity_reference_current_target_excluder",
* label = @Translation("Exclude current entity from list (ONLY WORKS WITH ORGS FOR NOW)"),
* description = @Translation("Don't show the referenced entity if it is the entity being currently viewed"),
* field_types = {
* "entity_reference"
* }
* )
*/
class EntityReferenceCurrentTargetExcluder extends EntityReferenceLabelFormatter {
// Remove the item which matches the organisation being currently viewed.
public function viewElements(\Drupal\Core\Field\FieldItemListInterface $items, $langcode) {
foreach($items as $delta=>$item) {
$current_org = \Drupal::routeMatch()->getParameter('oc_organisation')->id();
$item_target_id = $item->get('target_id')->getValue();
if ($current_org == $item_target_id) {
$items->removeItem($delta);
break;
}
}
$elements = parent::viewElements($items, $langcode);
return $elements;
}
//
}