function ResourceIdentifier::toResourceIdentifier
Same name in other branches
- 8.9.x core/modules/jsonapi/src/JsonApiResource/ResourceIdentifier.php \Drupal\jsonapi\JsonApiResource\ResourceIdentifier::toResourceIdentifier()
- 10 core/modules/jsonapi/src/JsonApiResource/ResourceIdentifier.php \Drupal\jsonapi\JsonApiResource\ResourceIdentifier::toResourceIdentifier()
- 11.x core/modules/jsonapi/src/JsonApiResource/ResourceIdentifier.php \Drupal\jsonapi\JsonApiResource\ResourceIdentifier::toResourceIdentifier()
Creates a ResourceIdentifier object.
Parameters
\Drupal\Core\Field\Plugin\Field\FieldType\EntityReferenceItem $item: The entity reference field item from which to create the relationship.
int $arity: (optional) The arity of the relationship.
Return value
self A new ResourceIdentifier object.
1 call to ResourceIdentifier::toResourceIdentifier()
- ResourceIdentifier::toResourceIdentifiers in core/
modules/ jsonapi/ src/ JsonApiResource/ ResourceIdentifier.php - Creates an array of ResourceIdentifier objects.
File
-
core/
modules/ jsonapi/ src/ JsonApiResource/ ResourceIdentifier.php, line 282
Class
- ResourceIdentifier
- Represents a JSON:API resource identifier object.
Namespace
Drupal\jsonapi\JsonApiResourceCode
public static function toResourceIdentifier(EntityReferenceItem $item, $arity = NULL) {
$property_name = static::getDataReferencePropertyName($item);
$target = $item->get($property_name)
->getValue();
if ($target === NULL) {
return static::getVirtualOrMissingResourceIdentifier($item);
}
assert($target instanceof EntityInterface);
/** @var \Drupal\jsonapi\ResourceType\ResourceTypeRepositoryInterface $resource_type_repository */
$resource_type_repository = \Drupal::service('jsonapi.resource_type.repository');
$resource_type = $resource_type_repository->get($target->getEntityTypeId(), $target->bundle());
// Remove unwanted properties from the meta value, usually 'entity'
// and 'target_id'.
$properties = TypedDataInternalPropertiesHelper::getNonInternalProperties($item);
$main_property_name = $item->getDataDefinition()
->getMainPropertyName();
$meta = array_diff_key($properties, array_flip([
$property_name,
$main_property_name,
]));
if (!is_null($arity)) {
$meta[static::ARITY_KEY] = $arity;
}
$meta["drupal_internal__{$main_property_name}"] = $properties[$main_property_name];
return new static($resource_type, $target->uuid(), $meta);
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.