Added custom field formatter to exclude current organisation from entity reference list
This commit is contained in:
parent
73d9d6490a
commit
8816441f94
@ -0,0 +1,36 @@
|
||||
<?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();
|
||||
\Drupal::logger("foo")->error($current_org . " " . $item_target_id);
|
||||
if ($current_org == $item_target_id) {
|
||||
$items->removeItem($delta);
|
||||
break;
|
||||
}
|
||||
}
|
||||
$elements = parent::viewElements($items, $langcode);
|
||||
return $elements;
|
||||
}
|
||||
//
|
||||
}
|
Reference in New Issue
Block a user