Skip to content

Commit

Permalink
Add optional pass_target_id argument to (#68)
Browse files Browse the repository at this point in the history
* add optional pass_target_id argument

* style

* Clarify docs; add label when passed entity
  • Loading branch information
seth-shaw-asu authored Nov 24, 2022
1 parent a6acaf4 commit 5db3cd5
Showing 1 changed file with 19 additions and 5 deletions.
24 changes: 19 additions & 5 deletions src/EntityReferenceConverter.php
Original file line number Diff line number Diff line change
Expand Up @@ -18,13 +18,24 @@ class EntityReferenceConverter {
* An array of arguments defined in the mapping.
* Expected keys are:
* - link_field: The field used to store the URI we will use.
* - pass_target_id: (true/false) should we return a target ID
* when no term is found?
*
* @return mixed
* Either the replaced URI string OR the targeted entity if no URI.
* In order of availability:
* - the replaced URI string,
* - the target entity's label,
* - (if pass_target_id is true) the target entity's ID,
* - or an empty string.
*/
public static function linkFieldPassthrough($target, array $arguments) {
if (is_a($target, 'Drupal\Core\Entity\FieldableEntityInterface') && !empty($target->get($arguments['link_field'])->uri)) {
return $target->get($arguments['link_field'])->uri;
if (is_a($target, 'Drupal\Core\Entity\FieldableEntityInterface')) {
if (empty($target->get($arguments['link_field'])->uri)) {
return $target->label();
}
else {
return $target->get($arguments['link_field'])->uri;
}
}

if (is_array($target) && array_key_exists('target_id', $target)) {
Expand All @@ -35,9 +46,12 @@ public static function linkFieldPassthrough($target, array $arguments) {
elseif ($ent) {
return $ent->get('name')->value;
}
elseif (array_key_exists('pass_target_id', $arguments) && $arguments['pass_target_id']) {
return $target['target_id'];
}
}
// We don't have a value to pass, so don't bother converting.
return $target;
// Nothing worked, so return nothing.
return '';
}

}

0 comments on commit 5db3cd5

Please sign in to comment.